⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpchat.java

📁 这是我做的JAVA的socket网络通信源码
💻 JAVA
字号:
package chat;import java.io.*;import java.net.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class UdpChat extends JFrame {  JPanel contentPane;  JScrollPane jScrollPane1 = new JScrollPane();  JTextArea jTextArea1 = new JTextArea();  JLabel jLabel1 = new JLabel();  JTextField jTextField1 = new JTextField();  JLabel jLabel2 = new JLabel();  JTextField jTextField2 = new JTextField();  JLabel jLabel3 = new JLabel();  JTextField jTextField3 = new JTextField();  JButton jButton1 = new JButton();  JButton jButton2 = new JButton();boolean wait=true;  DatagramSocket receiveSocket,sendSocket;  DatagramPacket receivePacket,sendPacket;  public void receiveMessage(){   try{    String hostname;//定義客戶機變量   //建立端口號為5000的DatagramSocket對象   receiveSocket=new DatagramSocket(4331);   byte buf[]=new byte[500];   //建立datagrampacket對象   receivePacket=new DatagramPacket(buf,buf.length);   while(wait=true)   {    receiveSocket.receive(receivePacket);//接收數據包    hostname=receivePacket.getAddress().toString();//獲得主機名    int port=receivePacket.getPort();//獲得端口號    jTextArea1.append("端口号为"+port+"的信息:");    String str=new String(receivePacket.getData(),0,receivePacket.getLength());    jTextArea1.append(str+"\n");//顯示收到的數據   }   }catch(SocketException e){jTextArea1.append(e+"\n");}catch(IOException e){jTextArea1.append(e+"\n");}  }  public void sendMassage()  {   //發送數據包  try{   String str=jTextField1.getText();   String ip=jTextField2.getText();//獲得目的地的IP地址   int port=Integer.parseInt(jTextField3.getText());//獲得端口號   if(port>=1 && port<=65535)   {    jTextArea1.append("发给端口号为"+port+"的消息:"+str+"\n");    byte[] buf=new byte[500];    //str.getBytes(0,str.length(),buf,0);    str.getBytes(0,str.length(),buf,0);    sendPacket=new DatagramPacket(buf,str.length(),InetAddress.getByName(ip),port);    sendSocket.send(sendPacket);//發送數據包    jTextField1.setText("");    jTextField2.setText("");    jTextField3.setText("");  }  }catch(IOException e){jTextArea1.append(e+"\n");}  }  //Construct the frame  public UdpChat() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    contentPane = (JPanel) this.getContentPane();    contentPane.setBackground(new Color(180, 187, 255));    contentPane.setFont(new java.awt.Font("Dialog", 0, 12));    contentPane.setMaximumSize(new Dimension(2147483647, 2147483647));    contentPane.setLayout(null);    this.setSize(new Dimension(400, 300));    this.setTitle("UDP聊天程序");    jScrollPane1.setBounds(new Rectangle(10, 8, 378, 133));    jTextArea1.setText("");    jLabel1.setFont(new java.awt.Font("Dialog", 0, 12));    jLabel1.setRequestFocusEnabled(true);    jLabel1.setVerifyInputWhenFocusTarget(true);    jLabel1.setText("IP地址");    jLabel1.setBounds(new Rectangle(9, 150, 36, 21));    jTextField1.setText("");    jTextField1.setBounds(new Rectangle(47, 150, 137, 29));    jLabel2.setFont(new java.awt.Font("Dialog", 0, 12));    jLabel2.setText("端口号");    jLabel2.setBounds(new Rectangle(214, 150, 48, 24));    jTextField2.setText("");    jTextField2.setBounds(new Rectangle(270, 150, 106, 28));    jLabel3.setFont(new java.awt.Font("Dialog", 0, 12));    jLabel3.setRequestFocusEnabled(true);    jLabel3.setText("发送信息");    jLabel3.setBounds(new Rectangle(4, 195, 53, 20));    jTextField3.setText("");    jTextField3.setBounds(new Rectangle(62, 193, 327, 33));    jTextField3.addKeyListener(new UdpChat_jTextField3_keyAdapter(this));    jButton1.setBounds(new Rectangle(6, 248, 98, 29));    jButton1.setFont(new java.awt.Font("Dialog", 0, 12));    jButton1.setText("发送");    jButton1.addActionListener(new UdpChat_jButton1_actionAdapter(this));    jButton2.setBounds(new Rectangle(216, 251, 107, 31));    jButton2.setFont(new java.awt.Font("Dialog", 0, 12));    jButton2.setToolTipText("");    jButton2.setText("退出");    jButton2.addActionListener(new UdpChat_jButton2_actionAdapter(this));    contentPane.add(jScrollPane1, null);    contentPane.add(jLabel1, null);    contentPane.add(jTextField1, null);    contentPane.add(jLabel2, null);    contentPane.add(jTextField2, null);    contentPane.add(jLabel3, null);    contentPane.add(jTextField3, null);    contentPane.add(jButton1, null);    contentPane.add(jButton2, null);    jScrollPane1.getViewport().add(jTextArea1, null);    receiveMessage();  }  //Overridden so we can exit when window is closed  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      System.exit(0);    }  }  void jButton1_actionPerformed(ActionEvent e) {sendMassage();  }  void jButton2_actionPerformed(ActionEvent e) { wait=false; System.exit(0);  }  void jTextField3_keyPressed(KeyEvent e) {if(e.getKeyChar()==KeyEvent.VK_ENTER)    {     sendMassage();    }  }}class UdpChat_jButton1_actionAdapter implements java.awt.event.ActionListener {  UdpChat adaptee;  UdpChat_jButton1_actionAdapter(UdpChat adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton1_actionPerformed(e);  }}class UdpChat_jButton2_actionAdapter implements java.awt.event.ActionListener {  UdpChat adaptee;  UdpChat_jButton2_actionAdapter(UdpChat adaptee) {    this.adaptee = adaptee;  }  public void actionPerformed(ActionEvent e) {    adaptee.jButton2_actionPerformed(e);  }}class UdpChat_jTextField3_keyAdapter extends java.awt.event.KeyAdapter {  UdpChat adaptee;  UdpChat_jTextField3_keyAdapter(UdpChat adaptee) {    this.adaptee = adaptee;  }  public void keyPressed(KeyEvent e) {    adaptee.jTextField3_keyPressed(e);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -