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

正文內(nèi)容

合工大java實驗報告-資料下載頁

2025-05-13 22:37本頁面
  

【正文】 tArea(16,35)。 JScrollPane scroll=new JScrollPane(content)。 //設(shè)置滾動條 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不可再次點擊 try { (Connect to server....\n)。 //在文本區(qū)中顯示Connect to server....\n portNum =(())。 //讀取port文本框中的字符串,并將字符串轉(zhuǎn)化為整型賦給portNum socket = new Socket((),portNum)。 //定義對象socket,并指定主機號(host)和端口號portNum ClientThread ct = new ClientThread()。 //定義一個ClientThread類的對象ct ()。 //啟動一個線程,并調(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(()))。//獲取socket對象的字節(jié)輸入流,并將字節(jié)流最終轉(zhuǎn)換為緩沖字符輸入流 String str。 while(true){ str = ()。 //按行讀取 // (\a)。 //喇叭響一聲 (str+\n)。 //延長字符串 } } catch (Exception ex) { } }} }測試結(jié)果:五、實驗結(jié)論、分析、思考題與心得體會①第一次寫這個程序的時候我用的數(shù)據(jù)報通信DatagramSocket和DatagramPacket來寫,結(jié)果發(fā)現(xiàn)是UDP通信,發(fā)送一個消息只有等到對方回復(fù)后才能發(fā)送第二個消息,十分不方便。后來用Socket和ServerSocket來寫,對于我這個新手來說更加容易上手。②因為服務(wù)器的GUI界面有start 和say按鈕,客戶端有connect和say按鈕,按鈕被點擊后會觸發(fā)動作事件,而不同的按鈕要執(zhí)行不同的操作,也就意味著要寫多個actionPerformed()方法,可是一個類里面只能寫一個actionPerformed()方法,這可怎么辦呢?后來我上網(wǎng)查閱資料,上網(wǎng)查看別人寫的代碼,發(fā)現(xiàn)可以寫幾個實現(xiàn)了ActionListener接口的內(nèi)部類,在內(nèi)部類中再寫一個acitionPerformed()方法,這樣就寫了好幾個不同的actionPerformed()方法,在注冊監(jiān)聽器的時候,按鈕需要實現(xiàn)哪種功能,就用哪個內(nèi)部類的對象來監(jiān)聽就可以了。③在GUI的設(shè)計中設(shè)計了三個Panel,用BorderLayout來布局,分為NORTH,CENTER,SOUTH;還特意設(shè)置了JSscrollpane滾動條,防止JTextField中的內(nèi)容超出容量;我也特意設(shè)計了雙方對話的時間,采用的是打印new Date()。④在服務(wù)器中創(chuàng)建ServerSocket對象來接受客戶端的連接請求,并指定端口號,客戶端通過Socket對象來向服務(wù)器的ip和端口發(fā)送連接請求。服務(wù)器在接到連接請求后,服務(wù)器會創(chuàng)建一個新的Socket對象與客戶端的Socket對象連接。連接成功后通過IO流來通信,服務(wù)器的輸入流是客戶端的輸出流,服務(wù)器的輸出流時客戶端的輸入流。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1