码迷,mamicode.com
首页 > 其他好文 > 详细

Socket简单入门UDP协议(1)

时间:2018-10-20 22:09:42      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:客户端   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 }

 

Socket简单入门UDP协议(1)

标签:客户端   bytes   指定   exception   地址   dp2   ack   length   入门   

原文地址:https://www.cnblogs.com/kuangyefeige/p/9822890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!