网络编程UDP Demo1

!!!这是循环打印的输入的内容,如果要循环输入的话,一定要记得切换线程来输入,要不不管用的

package 网络编程UDP;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UDPClient {
    public static void main(String[] args) {
        DatagramSocket ds = null;
        try {
            // 创建客户端的套接字对象
            ds = new DatagramSocket();
            // 定义一个发送的内容
//            字符串.getBytes()将字符串转换为字节数组
            byte[] bs = "你好".getBytes();
            // 创建要发送的目的的IP地址也可以是本机的名字也可以是192.168.1.102(本人电脑)
            InetAddress is = InetAddress.getByName("MSI");
            // 打数据包
            DatagramPacket dp = new DatagramPacket(bs, bs.length, is, 10005);
            // 发送数据
            ds.send(dp);

        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ds != null) {
                ds.close();
            }
        }

    }
}
package 网络编程UDP;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UDPServer {
    public static void main(String[] args) {
        DatagramSocket ds = null;
        try {
            //创建UDP服务器端的对象,必须制定端口8000以前的都被占用了,建议是10000以后 的
            ds = new DatagramSocket(10005);
            //定义接收数据的字节数组
            byte[] bs = new byte[1024];
            //定义接收的数据包
            DatagramPacket dp = new DatagramPacket(bs,bs.length);
            System.out.println("服务器已经启动");
            ds.receive(dp);
            //获得发送端的IP
            InetAddress ia = dp.getAddress();
            //获取数据包中的数据
            byte[] bs1 = dp.getData(); 
            //获得接收数据的长度(实际接收的长度)
            int len = dp.getLength();
            //组装接收的数据
            String data = new String(bs1,0,len);
            System.out.println(ia.getHostAddress()+"接收了"+data);
            
            
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            if(ds!=null) {
                ds.close();
            }
        }
        
        
    }
}

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/java-jiangtao-home/p/9388344.html
今日推荐