局域网内主机之间Socket通信实现

来源:互联网 发布:手机淘宝怎么申请品牌 编辑:程序博客网 时间:2024/05/23 23:44

只能传输文字且只能在局域网内实现通信


主机1:

package SocketTest;import java.net.*;import java.io.*;import java.awt.*;import javax.swing.*;import java.util.*;import java.awt.event.*;public class Server extends JFrame implements Runnable,ActionListener {JTextField outMessage = new JTextField(12);JTextArea inMessage = new JTextArea(12,20);JButton b = new JButton("发送数据");Server(){super("Server");setSize(320,200);setVisible(true);JPanel p = new JPanel();b.addActionListener(this);p.add(outMessage);p.add(b);Container con = getContentPane();con.add(new JScrollPane(inMessage), BorderLayout.CENTER);con.add(p, BorderLayout.NORTH);Thread thread = new Thread(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();thread.start();}public void actionPerformed(ActionEvent event){ byte b[] = outMessage.getText().trim().getBytes(); try{ InetAddress address = InetAddress.getByName("192.168.1.110"); DatagramPacket data = new DatagramPacket(b,b.length,address,1234); DatagramSocket mail = new DatagramSocket(); mail.send(data); } catch(Exception e){}}public void run(){DatagramPacket pack = null;DatagramSocket mail = null;byte b[] = new byte[8192];try{pack = new DatagramPacket(b,b.length);mail = new DatagramSocket(5678);}catch(Exception e){}while(true){try{mail.receive(pack);String message = new String(pack.getData(),0,pack.getLength());inMessage.append("收到的数据来自"+pack.getAddress());inMessage.append("\n收到的数据是"+message+"\n");inMessage.setCaretPosition(inMessage.getText().length());}catch(Exception e){}}}public static void main(String [] args){new Server();}}

主机2:

package SocketTest;import java.net.*;import java.io.*;import java.awt.*;import javax.swing.*;import java.util.*;import java.awt.event.*;public class Client extends JFrame implements Runnable,ActionListener {JTextField outMessage = new JTextField(12);JTextArea inMessage = new JTextArea(12,20);JButton b = new JButton("发送数据");Client(){super("Client");setBounds(350,100,320,200);setVisible(true);JPanel p = new JPanel();b.addActionListener(this);p.add(outMessage);p.add(b);Container con = getContentPane();con.add(new JScrollPane(inMessage), BorderLayout.CENTER);con.add(p, BorderLayout.NORTH);Thread thread = new Thread(this);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();thread.start();}public void actionPerformed(ActionEvent event){ byte b[] = outMessage.getText().trim().getBytes(); try{ InetAddress address = InetAddress.getByName("192.168.1.106"); DatagramPacket data = new DatagramPacket(b,b.length,address,5678); DatagramSocket mail = new DatagramSocket(); mail.send(data); } catch(Exception e){}}public void run(){DatagramPacket pack = null;DatagramSocket mail = null;byte b[] = new byte[8192];try{pack = new DatagramPacket(b,b.length);mail = new DatagramSocket(1234);}catch(Exception e){}while(true){try{mail.receive(pack);String message = new String(pack.getData(),0,pack.getLength());inMessage.append("收到的数据来自"+pack.getAddress());inMessage.append("\n收到的数据是"+message+"\n");inMessage.setCaretPosition(inMessage.getText().length());}catch(Exception e){}}}public static void main(String [] args){new Client();}}


0 0
原创粉丝点击