UDP实验课01"/>
UDP实验课01
实验课上测试的源码。
1)服务器端
Code:- importjava.io.*;
- importjava.*;
- //服务器端
- publicclassUDPServerTest{
- staticpublicvoidmain(Stringargs[]){
- DatagramSocketreceiveSocket=null;
- try{
- //DatagramSocket(intport):创建实例,并固定监听Port端口的报文。通常用于服务端
- receiveSocket=newDatagramSocket(55511);
- bytebuf[]=newbyte[1000];
- //DatagramPacket(byte[]buf,intlength):将数据包中Length长的数据装进Buf数组,一般用来接收客户端发送的数据。
- DatagramPacketreceivePacket=newDatagramPacket(buf,buf.length);
- System.out.println("开始接受数据:");
- booleanflag=true;//作为接收完之后退出的标记
- while(flag){
- //接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,
- //使程序暂停在这个地方,直到一个条件触发。
- receiveSocket.receive(receivePacket);
- Stringname=receivePacket.getAddress().toString();
- System.out.println("/n来自主机:"+name+"/n端口:"
- +receivePacket.getPort());
- //从实例中取得报文的Byte数组编码
- Strings=newString(receivePacket.getData(),0,receivePacket
- .getLength());
- System.out.println("接受到的数据是:"+s);
- flag=false;
- //需关闭连接,也关闭端口。
- receiveSocket.close();
- }
- }catch(SocketExceptione){
- receiveSocket.close();
- e.printStackTrace();
- System.exit(-1);
- }catch(IOExceptione){
- receiveSocket.close();
- System.out.println("网络通讯出现错误,问题在"+e.toString());
- }
- }
- }
2)客户端
Code:- importjava.io.*;
- importjava.*;
- //客户端
- publicclassUDPClientTest{
- publicstaticvoidmain(Stringargs[]){
- DatagramSocketsendSocket=null;
- try{
- //DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。
- //DatagramSocket(intport):创建实例,并固定监听Port端口的报文。通常用于服务端
- sendSocket=newDatagramSocket();
- Stringstring="whoau没死过,不知道dead的感觉";
- byte[]databyte=newbyte[100];
- databyte=string.getBytes();
- //从Buf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口,通常用来发送数据给客户端。此处事发送给服务器端
- DatagramPacketsendPacket=newDatagramPacket(databyte,
- databyte.length,InetAddress.getByName("222.17.97.152"),
- 55511);
- //发送报文sendPacket到目的地
- sendSocket.send(sendPacket);
- System.out.println("客户端开始传送数据!");
- sendSocket.close();
- }catch(SocketExceptione){
- sendSocket.close();
- e.printStackTrace();
- System.out.println("不能打开数据报Socket,或数据报Socket无法与指定端口连接!");
- }catch(IOExceptionioe){
- sendSocket.close();
- System.out.println(ioe.toString());
- }
- }
- }
总结:异常或正常退出时,最好调用close方法,否则可能造成资源无法收回。
更多推荐
UDP实验课01
发布评论