gpt4 book ai didi

java Socket UDP实例详解

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java Socket UDP实例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

UDP编程示例 。

服务器端:

java" id="highlighter_968619">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package socket;
 
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
 
public class UDPServer {
 
   
   public static void main(String[] args) throws IOException {
     byte [] buf = new byte [ 1024 ];
     DatagramPacket dp = new DatagramPacket(buf, buf.length); //声明一个用来接收数据的“包裹”
     DatagramSocket ds = new DatagramSocket( 5678 ); //指定的是UDP中的端口号5678,在TCP中,还有另外一个端口号为5678的端口
     while ( true ){
       ds.receive(dp); //阻塞式的
       System.out.println( new String(buf, 0 ,dp.getLength())); //dp中获取的数据的长度
     }
 
   }
 
}

客户端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package socket;
 
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
 
public class UDPClient {
 
   public static void main(String[] args) throws IOException {
     byte [] buf = new String( "Hello" ).getBytes();
     //UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port
     DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress( "127.0.0.1" , 5678 ));
     DatagramSocket ds = new DatagramSocket( 9999 ); //指明发送端的端口号
     ds.send(dp);
     ds.close();
   }
 
}

说明:

1. 严格意义上来讲,UDP没有server和client之分,不像TCP中有ServerSocket和Socket,UDP中只有DatagramSocket.

2. UDP和TCP的端口是分开的,例如UDP有一个端口号为5678的端口,TCP也有一个端口号为5678的端口.

3. UDP是无连接的,所以要在发送的数据包裹中指定要发送到的ip:port.

4. 如果要发送long、int等类型的数据,则需要使用到ByteArrayOutputStream、DataOutputStream、ByteArrayInputStream、ByteArrayInputStream流类型,如下:

服务器端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package socket;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
 
public class UDPServer {
 
   
   public static void main(String[] args) throws IOException {
     byte [] buf = new byte [ 1024 ];
     DatagramPacket dp = new DatagramPacket(buf, buf.length);
     DatagramSocket ds = new DatagramSocket( 5678 );
     ByteArrayInputStream bais = null ;
     DataInputStream dos = null ;
     while ( true ){
       ds.receive(dp); 
       bais = new ByteArrayInputStream(buf);
       dos = new DataInputStream(bais);
       System.out.println(dos.readLong());
     }
 
   }
 
}

客户端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package socket;
 
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
 
public class UDPClient {
 
   public static void main(String[] args) throws IOException {
     byte [] buf = null ;
     long l = 100000L;
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     DataOutputStream dos = new DataOutputStream(baos);
     dos.writeLong(l);
     buf = baos.toByteArray();
     DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress( "127.0.0.1" , 5678 ));
     DatagramSocket ds = new DatagramSocket( 9999 ); 
     ds.send(dp);
     ds.close();
 
 
         dos.close();
   }
 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。

原文链接:http://blog.csdn.net/xiangwanpeng/article/details/53214071 。

最后此篇关于java Socket UDP实例详解的文章就讲到这里了,如果你想了解更多关于java Socket UDP实例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com