发布时间:2025-12-10 22:47:32 浏览次数:1
服务器
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();}}}}