java socket如何实现聊天小程序
作者
这篇文章给大家分享的是有关java socket如何实现聊天小程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
服务器
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-generatedmethodstub newServer().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:handleexception e.printStackTrace(); } } classServerReadextendsThread{ publicvoidrun(){ while(true){ try{ Stringmessage=read.readUTF(); taArea.append("对方:"+message+"\n"); }catch(Exceptione1){ //TODO:handleexception JOptionPane.showMessageDialog(taArea,"提示:服务端已经断开连接"); //e.printStackTrace(); //System.exit(-1); return; } } } } classServerWriteextendsThread{ publicvoidrun(){ tfField.addActionListener(newServerListen()); sbButton.addActionListener(newServerListen()); } } classServerListenimplementsActionListener{ @Override publicvoidactionPerformed(ActionEvente){ try{ Stringstr=tfField.getText(); tfField.setText(""); taArea.append("我:"+str+"\n"); write.writeUTF(str); }catch(Exceptione2){ //TODO:handleexception e2.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-generatedmethodstub newClient().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-generatedmethodstub try{ socket=newSocket("127.0.0.1",7780); write=newDataOutputStream(socket.getOutputStream()); read=newDataInputStream(socket.getInputStream()); System.out.print("已建立网络连接"); }catch(Exceptione){ //TODO:handleexception e.printStackTrace(); } } classClientReadextendsThread{ publicvoidrun(){ while(true){ try{ Stringmessage=read.readUTF(); taArea.append("对方:"+message+"\n"); }catch(Exceptione1){ //TODO:handleexception JOptionPane.showMessageDialog(taArea,"提示:客户端已经断开连接"); //e.printStackTrace(); //System.exit(-1); return; } } } } classClientWriteextendsThread{ publicvoidrun(){ tfField.addActionListener(newClientListen()); sbButton.addActionListener(newClientListen()); } } classClientListenimplementsActionListener{ @Override publicvoidactionPerformed(ActionEvente){ try{ Stringstr=tfField.getText(); tfField.setText(""); taArea.append("我:"+str+"\n"); write.writeUTF(str); }catch(Exceptione2){ //TODO:handleexception e2.printStackTrace(); } } } }
感谢各位的阅读!关于“java socket如何实现聊天小程序”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~