简单的UDP通信(Java实现)

一 .源代码

/*服务器端*/
import java.util.*;
import java.net.*;
import java.io.*;
public class UDPServer {
    private final static int PORT=3000;
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            DatagramSocket socket=new DatagramSocket(PORT);
            while(true)
            {
                try{
                    DatagramPacket hasRecv=new DatagramPacket(new byte[10],10);
                    socket.receive(hasRecv);
            String str=new String(hasRecv.getData(),0,hasRecv.getLength(),"ASCII");
                    System.out.println("has recv:"+str);
                    byte[]data="ACK".getBytes();
                    DatagramPacket toSend=new DatagramPacket(data,data.length,hasRecv.getAddress(),hasRecv.getPort());
                    socket.send(toSend);

                }
                catch(IOException ex)
                {
                    System.err.println(ex);
                }
            }
        }
        catch(IOException ex)
        {
            System.err.println(ex);
        }
    }
}



/*客户端*/
import java.net.*;
import java.util.*;
import java.io.*;
/**
 *
 * @author liuzhenzhao
 */
public class UDPClient {

    /**
     * @param args the command line arguments
     */
    private final static int PORT=3000;//服务器的端口号
    private final static String IP="192.168.108.130";///服务器的ip地址
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            DatagramSocket socket=new DatagramSocket(0);//指定0让操作系统指定一个端口号
            socket.setSoTimeout(10000);//定义超时时间
            InetAddress ip=InetAddress.getByName(IP);
            byte []sendbuff="hello".getBytes();
            System.out.println(sendbuff.length);
            DatagramPacket send=new DatagramPacket(sendbuff,sendbuff.length,ip,PORT);//用于发送的包
            DatagramPacket recv=new DatagramPacket(new byte[10],10);//用于接收的包
            socket.send(send);
            socket.receive(recv);
            String res=new String(recv.getData(),0,recv.getLength(),"ASCII");
            System.out.println("has recv:"+res);
        }
        catch(IOException ex)
        {
            System.err.println(ex);
        }
    }
}

二.运行结果
运行结果如下:
1.客户端
这里写图片描述
2.服务器端
这里写图片描述
三.说明:
服务器端运行在linux虚拟机上,客户端运行在windows上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值