标签:客户端 bytes 指定 exception 地址 dp2 ack length 入门
一、服务器端代码:
1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 import java.net.SocketAddress; 5 import java.net.SocketException; 6 7 8 /** 9 * 服务器端 10 * */ 11 public class AskServer { 12 public static void main(String[] args) { 13 try { 14 //1.创建接受方(服务器)套接字,并绑定端口号 15 DatagramSocket ds=new DatagramSocket(8800); 16 //2.确定数据包接受的数据的数组大小 17 byte[] buf=new byte[1024]; 18 //3.创建接受类型的数据包,数据将存储在数组中 19 DatagramPacket dp=new DatagramPacket(buf, buf.length); 20 //4.通过套接字接受数据 21 ds.receive(dp); 22 //5.解析发送方发送的数据 23 String mess=new String(buf,0,dp.getLength()); 24 System.out.println("客户端说:"+mess); 25 //响应客户端 26 String reply="您好,我在的,请咨询!"; 27 byte[] replys=reply.getBytes(); 28 //响应地址 29 SocketAddress sa=dp.getSocketAddress(); 30 //数据包 31 DatagramPacket dp2=new DatagramPacket(replys, replys.length,sa); 32 //发送 33 ds.send(dp2); 34 //6.释放资源 35 ds.close(); 36 } catch (SocketException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } catch (IOException e) { 40 // TODO Auto-generated catch block 41 e.printStackTrace(); 42 } 43 44 } 45 }
二、客户端代码:
1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 import java.net.InetAddress; 5 import java.net.SocketException; 6 import java.net.UnknownHostException; 7 8 /** 9 * 客户端 10 * */ 11 public class AskClient { 12 public static void main(String[] args) { 13 //1.确定发送给服务器的信息、服务器地址以及端口 14 String mess="你好,我想咨询一个问题!"; 15 byte[] buf=mess.getBytes(); 16 InetAddress ia=null; 17 try { 18 ia=InetAddress.getByName("localhost"); 19 } catch (UnknownHostException e) { 20 e.printStackTrace(); 21 } 22 int port=8800; 23 //2.创建数据包,发送指定长度的信息到指定服务器的指定端口 24 DatagramPacket dp=new DatagramPacket(buf, buf.length,ia,port); 25 //3.创建DatagramSocket对象 26 DatagramSocket ds=null; 27 try { 28 ds=new DatagramSocket(); 29 } catch (SocketException e) { 30 e.printStackTrace(); 31 } 32 //4.向服务器发送数据包 33 try { 34 ds.send(dp); 35 } catch (IOException e) { 36 // TODO Auto-generated catch block 37 e.printStackTrace(); 38 } 39 40 //接受服务器的响应并打印 41 byte[] buf2=new byte[1024]; 42 //创建接受类型的数据包,数据将存储在数组中 43 DatagramPacket dp2=new DatagramPacket(buf2, buf2.length); 44 //通过套接字接受数据 45 try { 46 ds.receive(dp2); 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } 50 //解析服务器的响应 51 String reply=new String(buf2,0,dp2.getLength()); 52 System.out.println("服务器的响应为:"+reply); 53 54 //5.释放资源 55 ds.close(); 56 } 57 }
标签:客户端 bytes 指定 exception 地址 dp2 ack length 入门
原文地址:https://www.cnblogs.com/kuangyefeige/p/9822890.html