服務器
packagedemo04;importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.net.ServerSocket;importjava.net.Socket;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.ScrollPaneConstants;publicclassownServer{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubnewServer().launch();}}classServer{JFrameframe;JTextAreataArea;JTextFieldtfField;JButtonsbButton;DataInputStreamread;DataOutputStreamwrite;ServerSocketscServerSocket;Socketsocket;publicvoidlaunch(){CreateUI();CreateNetWork();newServerWrite().start();newServerRead().start();}publicvoidCreateUI(){frame=newJFrame("MMServer");JPanelPanle=newJPanel();taArea=newJTextArea(15,25);taArea.setLineWrap(true);taArea.setWrapStyleWord(true);taArea.setEditable(true);JScrollPaneqScroller=newJScrollPane(taArea);qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);tfField=newJTextField(20);sbButton=newJButton("發送");Panle.add(qScroller);Panle.add(tfField);Panle.add(sbButton);frame.getContentPane().add(BorderLayout.CENTER,Panle);frame.setSize(400,400);frame.setVisible(true);}publicvoidclose(){try{write.close();read.close();socket.close();scServerSocket.close();}catch(Exceptione){System.exit(-1);}}publicvoidCreateNetWork(){try{scServerSocket=newServerSocket(7780);socket=scServerSocket.accept();read=newDataInputStream(socket.getInputStream());write=newDataOutputStream(socket.getOutputStream());System.out.print("網絡連接");}catch(Exceptione){//TODO:handleexceptione.printStackTrace();}}classServerReadextendsThread{publicvoidrun(){while(true){try{Stringmessage=read.readUTF();taArea.append("對方:"+message+"\n");}catch(Exceptione1){//TODO:handleexceptionJOptionPane.showMessageDialog(taArea,"提示:服務端已經斷開連接");//e.printStackTrace();//System.exit(-1);return;}}}}classServerWriteextendsThread{publicvoidrun(){tfField.addActionListener(newServerListen());sbButton.addActionListener(newServerListen());}}classServerListenimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvente){try{Stringstr=tfField.getText();tfField.setText("");taArea.append("我:"+str+"\n");write.writeUTF(str);}catch(Exceptione2){//TODO:handleexceptione2.printStackTrace();}}}}
客戶端
packagedemo04;importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.net.Socket;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.ScrollPaneConstants;publicclassownClient{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubnewClient().launch();}}classClient{JTextAreataArea;JTextFieldtfField;JButtonsbButton;DataInputStreamread=null;DataOutputStreamwrite=null;Socketsocket;publicvoidlaunch(){CreateUI();CreatNetWork();newClientRead().start();;newClientWrite().start();;}publicvoidCreateUI(){JFrameframe=newJFrame("MMClient");JPanelPanle=newJPanel();taArea=newJTextArea(15,25);taArea.setLineWrap(true);taArea.setWrapStyleWord(true);taArea.setEditable(true);JScrollPaneqScroller=newJScrollPane(taArea);qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);tfField=newJTextField(20);sbButton=newJButton("發送");Panle.add(qScroller);Panle.add(tfField);Panle.add(sbButton);frame.getContentPane().add(BorderLayout.CENTER,Panle);frame.setSize(400,400);frame.setVisible(true);}publicvoidCreatNetWork(){//TODOAuto-generatedmethodstubtry{socket=newSocket("127.0.0.1",7780);write=newDataOutputStream(socket.getOutputStream());read=newDataInputStream(socket.getInputStream());System.out.print("已建立網絡連接");}catch(Exceptione){//TODO:handleexceptione.printStackTrace();}}classClientReadextendsThread{publicvoidrun(){while(true){try{Stringmessage=read.readUTF();taArea.append("對方:"+message+"\n");}catch(Exceptione1){//TODO:handleexceptionJOptionPane.showMessageDialog(taArea,"提示:客戶端已經斷開連接");//e.printStackTrace();//System.exit(-1);return;}}}}classClientWriteextendsThread{publicvoidrun(){tfField.addActionListener(newClientListen());sbButton.addActionListener(newClientListen());}}classClientListenimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvente){try{Stringstr=tfField.getText();tfField.setText("");taArea.append("我:"+str+"\n");write.writeUTF(str);}catch(Exceptione2){//TODO:handleexceptione2.printStackTrace();}}}}
關于使用javasocket怎么實現一個聊天小程序就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
國債期貨代碼有哪些?國債期貨代碼(兩年期國債期貨代碼):TS2003上市交易所:大連商品交易所國債期貨代碼:030011上市交易所:上海期貨交易所交易品種:國債交易代碼:TS2003發行上市交易所:上海期貨交易所國債期貨的標的是國內最早推出的國債期貨合約,2005年11月10日正式掛牌交易,這也是國債期貨首個允許境內客戶參與的品種,是目前最受歡迎的國債期貨。國債期貨理論價格計算公式計算公式有兩種:...
10萬最聰明的存錢法有哪些?階梯存錢法和十二存單法有什么區別?隨小編一起來了解下吧1、階梯存錢法:驢可以把資金分為好幾份,每一份存進不一樣限期的定期存款里。以10萬為例,可以分為1萬、2萬、3萬、4萬四筆各自存一年銀行定期。用階梯存款的方式,益處是如果用戶臨時性需要用2萬,那只需把在其中2萬取出就可以,另外三部分存款的利息不會受到影響;2、十二存單法:每一個月存一筆一年期定期存款,持續存12個月,...
重磅消息,五大行齊發公告,加快金融投放,支持實體經濟,一時間引起大家的高度關注。大家比較好奇的是,實體經濟指的是什么?電商屬于實體經濟嗎?實體經濟怎么提高?具體詳情跟小編一起去看看吧。實體經濟是指國家商品價值生產出來的總量。包括文化產業,建筑業,商業,交通信息業,工業,農業等各大行業,是人類社會生存的基礎之一,所以各大國家都需要更看重實體經濟。也包括教育、文化、知識、信息、藝術、體育等精神產品的生...