Java聊天室服务器端和客户端的完整代码

2020-10-04 科技 101阅读
下面有个IP你把它设成对方的ip地址就可以了,在他的电脑上也把ip设为你自己的就可以实现QQ聊天了,就是界面有点丑!!希望能帮助到你!你可以查考下!! import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.JScrollPane; public class UDPChat extends JFrame implements ActionListener{ public TextArea textmessage = null ; public TextArea sendtext = null ; public DatagramSocket socket; public JScrollBar vsBar; public UDPChat() { super (); setTitle("小型聊天程序"); setBounds(200,150,350,280); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBackground(Color.BLACK); textmessage = new TextArea(); sendtext = new TextArea(); textmessage.setEditable( false ); textmessage.setColumns(35); textmessage.setRows(10); // textmessage.setLineWrap(true); sendtext.setColumns(35); sendtext.setRows(2); JButton buttonOK = new JButton("确定"); JButton buttonclean = new JButton("清空"); JButton buttonquit = new JButton("退出"); GridLayout grid = new GridLayout(3,1); grid.setHgap(10); grid.setVgap(10); panel1.setLayout(grid); // panel1.setLayout(new GridLayout(3,1)); panel1.add(buttonOK); panel1.add(buttonclean); panel1.add(buttonquit); panel2.setLayout( new FlowLayout()); panel2.add(textmessage); panel2.add(sendtext); getContentPane().add(panel1,BorderLayout.EAST); getContentPane().add(panel2,BorderLayout.CENTER); setVisible( true ); buttonOK.addActionListener( this ); buttonclean.addActionListener( this ); buttonquit.addActionListener( this ); server(); } public void server() { try { socket = new DatagramSocket(9527); byte [] buf = new byte [1024]; final DatagramPacket dp1 = new DatagramPacket(buf,buf.length); Runnable run = new Runnable(){ public void run() { while ( true ) { try { Thread.sleep(100); socket.receive(dp1); int len = dp1.getLength(); String message = new String(dp1.getData(),0,len); String ip = dp1.getAddress().getHostAddress(); System.out.println(ip); if (!InetAddress.getLocalHost().getHostAddress().equals(ip)) textmessage.append(ip+"\n"+message+'\n'); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } }; new Thread(run).start(); } catch (SocketException e) { e.printStackTrace(); } } public static void main(String[] args) { UDPChat udp = new UDPChat(); } @Override public void actionPerformed(ActionEvent e) { // JButton button = (JButton) e.getSource(); String buttonname =e.getActionCommand(); if (buttonname.equals("退出")) System.exit(0); if (buttonname.equals("清空")) { textmessage.setText(""); } if (buttonname.equals("确定")) { String iP = "192.168.8.15"; try { InetAddress address =InetAddress.getByName(iP); byte []data = sendtext.getText().getBytes(); DatagramPacket dp = new DatagramPacket(data,data.length,address,9527); String myip = InetAddress.getLocalHost().getHostAddress(); textmessage.append(myip +" \n"+sendtext.getText() +"\n"); socket.send(dp); sendtext.setText(""); } catch (UnknownHostException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com