javaoop-udp协议的解析

来源:互联网 发布:外盘期货交易软件 编辑:程序博客网 时间:2024/04/29 00:39

1.基本概念:

  1.DatagramPacket表示存放数据的数据报

      2. DatagramSocket表示接受或发送数据报的套接字


  DatagramSocket(int port):与上面不同的是,绑定到特定端口号,其它不变

  close(): 关闭套接字

  recevie(DatagramPacket dp):  接受数据报

  send(DatagramPacket dp): 发送数据报


》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

  这里触及了数据报,下面介绍数据报:

  接受类型:


  DatagramPacket(byte[] buf, int length):

  用来接受长度为length的buf数据(即数据存于字节数组buf中)

 2. 发送类型:

1.服务器端 接收之后 获取的 客户端的 端口与和 地址之后 就会用到 和 最开始 发送的 也会用到

  DatagramPacket(byte[] buf, int length, InetAddress address, int port);

  将length长的buf数据发送到指定的地址的端口号处


   将length长的buf数据发送到指定的套接字地址处

  有上面可知,我们发送数据时构造的数据报应该是发送类型的,而接受数据报时应该是接受类型的    

  》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

  1.一个接收方,一个发送方

  2.当接收方收到发送方发送的消息后,打印发送的消息及发送方的地址和端口号,之后向发送反馈一条信息“接受方:我收到了!”

  3.发送方打印出接收方反馈的消息

  详细思路见代码:

public class MyudpServer {


public static void main(String[] args) {
try {
DatagramSocket server=new DatagramSocket(6789);

byte [] bys=new byte[1024];

//创建接收消息的数据包
DatagramPacket dpreceive=new DatagramPacket(bys,bys.length);
//接收发送过来的消息
server.receive(dpreceive);

String msg=new String(dpreceive.getData(),0,dpreceive.getLength());
System.out.println("接收到的消息是:"+msg);

InetAddress addr =  dpreceive.getAddress();
int port=dpreceive.getPort();


msg="你好客户端,欢迎你!";
//发送消息的数据包
DatagramPacket dpsend = new DatagramPacket(msg.getBytes(),msg.getBytes().length,addr,port);
server.send(dpsend);


server.close();


} catch (Exception e) {
e.printStackTrace();
}
}


}

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public class MyudpClient {


public static void main(String[] args) {

try {
DatagramSocket client=new DatagramSocket();
String msg="你好,服务器。。。。";


DatagramPacket dpsend = new DatagramPacket(
msg.getBytes(),msg.getBytes().length,
InetAddress.getByName("127.0.0.1"),6789);

client.send(dpsend);

byte[] bys=new byte[1024];

//创建接收消息的数据包
DatagramPacket dpreceive=new DatagramPacket(bys,bys.length);
//接收发送过来的消息
client.receive(dpreceive);

msg=new String(dpreceive.getData(),0,dpreceive.getLength());
System.out.println("服务器说:"+msg);

client.close();
} catch (Exception e) {
e.printStackTrace();
}

}


}





0 0
原创粉丝点击