Zuerst ist der Servercode:
package ChatTwoPackage; import java.io.*; import java.net.*; public class ChatTwoServer { public ChatTwoServer(int port,String name) throws IOException { ServerSocket server=new ServerSocket(port);//创建seversocket对象,提供tcp连接服务。指定端口port,等待tcp连接。 System.out.print("正在等待连接,请勿操作!"); Socket client=server.accept();//创建socket对象,它等待接收客户端的连接。 new ChatTwoClient(name,client);//实现图形界面。 server.close(); } public static void main(String[] args) throws IOException { new ChatTwoServer(2001,"SQ"); } }
Dann ist der Client-Code:
package ChatTwoPackage; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; public class ChatTwoClient extends JFrame implements ActionListener { private String name; private JTextArea text_re; private JTextField text_se; private PrintWriter cout; private JButton buttons[]; public ChatTwoClient(String name,Socket socket) throws IOException { super("我:"+name+InetAddress.getLocalHost().getHostAddress()+":"+socket.getLocalPort()); this.setBounds(320, 240, 400, 240); this.text_re=new JTextArea(); this.text_re.setEditable(false); this.getContentPane().add(new JScrollPane(this.text_re)); JToolBar toolBar=new JToolBar(); this.getContentPane().add(toolBar,"South"); toolBar.add(this.text_se=new JTextField(30)); buttons=new JButton[2]; buttons[0]=new JButton("发送"); buttons[1]=new JButton("下线"); toolBar.add(buttons[0]); toolBar.add(buttons[1]); buttons[0].addActionListener(this); buttons[1].addActionListener(this);//给按钮添加事件监听,委托当前对象处理 this.setVisible(true); this.name=name; this.cout=new PrintWriter(socket.getOutputStream(),true);//获得socket输出流 this.cout.println(name); BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //将socket的字节输入流转换为字符流,默认GBK字符集,再创建缓冲字符输入流 String line="连接"+br.readLine()+"成功"; while(line!=null&&!line.endsWith("bye")) { text_re.append(line+"\r\n"); line=br.readLine(); }//读取对方发送的内容并显示,直到内容为为空或对方下线 br.close(); this.cout.close(); socket.close(); buttons[0].setEnabled(false); buttons[1].setEnabled(false); } public ChatTwoClient(String name,String host,int port) throws IOException { this(name,new Socket(host,port));//调用另一个构造方法 } public void actionPerformed(ActionEvent ev) { if(ev.getActionCommand().equals("发送")) { this.cout.println(name+":"+text_se.getText()); text_re.append("我:"+text_se.getText()+"\n"); text_se.setText(""); }//按下发送按钮后,将内容发出,并更新自己聊天框的内容 if(ev.getActionCommand().equals("下线")) { text_re.append("你已下线\n"); this.cout.println(name+"离线\n"+"bye\n"); buttons[0].setEnabled(false); buttons[1].setEnabled(false); }//下线按钮按下后,发送bye作为下线标记 } public static void main(String[] args) throws IOException { new ChatTwoClient("mxl","127.0.0.1",2001); //ip地址和端口 } }
Betriebseffekt:
Anweisungen:
1. Es müssen zwei Computer sein, einer als Server und zwei Computer als Server Code. Führen Sie zuerst den Servercode aus und warten Sie, bis der Client-Computer eine Verbindung herstellt. Nachdem der Client den Client-Code ausgeführt hat, wird er aufgefordert, die Verbindung erfolgreich herzustellen. Sie können die Nachricht senden.
2. Bevor Sie den Code ausführen, müssen Sie die IP-Adresse in die aktuelle IP-Adresse Ihres Computers (Computer, die über Modem, ISDN, ADSL, kabelgebundenes Breitband, Community-Breitband usw. auf das Internet zugreifen) ändern für sie ist jedes Mal anders, wenn sie online gehen. Dies wird als dynamische IP-Adresse bezeichnet. Wenn Sie einen Computer als Client und Server verwenden möchten, schreiben Sie die IP-Adresse als: 127.0.0.1 (127.0.0.1 ist die Loopback-Adresse, die sich auf den lokalen Computer bezieht und im Allgemeinen zum Testen verwendet wird). Führen Sie einfach zuerst den Servercode und dann den Clientcode aus.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein einfaches Chat-Programm mithilfe der Netzwerkkommunikationstechnologie in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!