freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

合工大java實(shí)驗(yàn)報(bào)告-資料下載頁(yè)

2025-05-13 22:27本頁(yè)面
  

【正文】 輸出日期和發(fā)送的消息( str) (new Date()+ \n me:+str+\n)。 ()。 //清空緩存區(qū) } ()。 } catch (Exception ex) {} } } class ServerThread extends Thread{ public void run(){ try { BufferedReader in = new BufferedReader(new InputStreamReader(()))。 //創(chuàng)建一個(gè)緩沖輸出流,其形參為從套接字 socket 中獲取的輸入流 String str。 while(true){ str = ()。 //按行讀取 ( str+\n)。 } } catch (Exception ex) {} } } }客戶端代碼:import .*。 import .*。 import .*。 import .*。 import .*。 import .*。 import 。 public class Client{ public static void main(String[] args) { MyFrame client=new MyFrame()。 (客戶端)。 (true)。 (false)。 //設(shè)置此窗體是否可由用戶調(diào)整大小 ()。 // 設(shè)置關(guān)閉操作 } } class MyFrame extends JFrame { JTextField ip。 JTextField port。 JTextField cin。 JTextArea content。 JButton connect。 JButton say。 Socket socket。 MyFrame(){ init()。 ConnectListen cListener=new ConnectListen()。 SayListen sListener = new SayListen()。 (cListener)。 //注冊(cè)監(jiān)聽(tīng)器 (sListener)。 //注冊(cè)監(jiān)聽(tīng)器 } void init(){ setLayout(new FlowLayout())。 //設(shè)置窗體為流式布局 setSize(440,500)。 setLocation(800,100)。 add(new JLabel(Server:ip))。 ip=new JTextField(,8)。 add(ip)。 add(new JLabel(Server:port))。 port=new JTextField(8888,8)。 add(port)。 connect=new JButton(connect)。 add(connect)。 content=new JTextArea(16,35)。 JScrollPane scroll=new JScrollPane(content)。 //設(shè)置滾動(dòng)條 add(scroll)。 add(new Label(Say:))。 cin=new JTextField(你好!,25)。 add(cin)。 say=new JButton(say)。 add(say)。 } class ConnectListen implements ActionListener{ int portNum。 public void actionPerformed(ActionEvent e){ (false)。 //按下 connect 按鈕后, connect 不可再次點(diǎn)擊 try { (Connect to server....\n)。 //在文本區(qū)中顯示 Connect to server....\n portNum =(())。 //讀取 port 文本框中的字符串,并將字符串轉(zhuǎn)化為整型賦給 portNum socket = new Socket((),portNum)。 //定義對(duì)象 socket,并指定主機(jī)號(hào)(host)和端口號(hào) portNum ClientThread ct = new ClientThread()。 //定義一個(gè) ClientThread 類的對(duì)象 ct ()。 //啟動(dòng)一個(gè)線程,并調(diào)用ClientThread 類中的 run()方法 } catch (Exception ex) {} } } class SayListen implements ActionListener{ String str。 public void actionPerformed(ActionEvent e){ try { PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(())),true)。 //從 socket 獲取字節(jié)輸出流,并將其最終轉(zhuǎn)化為 PrintWriter str=()。 //從文本框中獲取字符串賦給 str if(!()){ (new Date()+ \n+ str)。 //打印日期和 str (new Date()+\n me:+str+\n)。 ()。 //清空緩存區(qū) } ()。 } catch (Exception ex) {} } } class ClientThread extends Thread{ public void run(){ try { BufferedReader in = new BufferedReader(new InputStreamReader(()))。 //創(chuàng)建一個(gè)緩沖輸出流,其形參為從套接字 socket 中獲取的輸入流 String str。 while(true){ str = ()。 //按行讀取 ( str+\n)。 } } catch (Exception ex) {} } } }運(yùn)行結(jié)果:五、實(shí)驗(yàn)結(jié)論、分析、思考題與心得體會(huì)通過(guò)本次實(shí)驗(yàn),我對(duì)于GUI程序的便編寫(xiě),以及網(wǎng)絡(luò)通信與多線程編程有了一定的了解,并且也親自實(shí)現(xiàn)了一個(gè)基于GUI的客戶服務(wù)器的通信應(yīng)用程序,在實(shí)驗(yàn)過(guò)程中,我也遇到了不少的問(wèn)題并加以解決:,客戶端有connect和say按鈕,按鈕被點(diǎn)擊后會(huì)觸發(fā)動(dòng)作事件。而不同的按鈕要執(zhí)行不同的操作,也就意味著要寫(xiě)多個(gè)actionPerformed()方法,可是一個(gè)類里面只能寫(xiě)一個(gè)actionPerformed()方法,因此可以寫(xiě)幾個(gè)實(shí)現(xiàn)了ActionPerformed()方法,在內(nèi)部類中再寫(xiě)一個(gè)actionPerformed()方法,這樣就寫(xiě)了好幾個(gè)不同的actionPerformed()方法,在注冊(cè)監(jiān)聽(tīng)器的時(shí)候,按鈕需要實(shí)現(xiàn)哪種功能,就用哪個(gè)內(nèi)部類的對(duì)象來(lái)監(jiān)聽(tīng)就可以了。 ServerSocket 對(duì)象來(lái)接受客戶端的連接請(qǐng)求, 并指定端口號(hào), 客戶端通過(guò)Socket 對(duì)象來(lái)向服務(wù)器的 ip 和端口發(fā)送連接請(qǐng)求。服務(wù)器在接到連接請(qǐng)求后,服務(wù)器會(huì)創(chuàng)建一個(gè)新的 Socket 對(duì)象與客戶端的 Socket 對(duì)象連接。連接成功后通過(guò) IO 流來(lái)通信,服務(wù)器的輸入流是客戶端的輸出流,服務(wù)器的輸出流時(shí)客戶端的輸入流
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1