UDP接收端和发送端_Socket编程
UDP接收端
- 接收端启动文件
1 import java.net.DatagramSocket;
2 import java.net.SocketException;
3
4 public class Server {
5
6 public static void main(String[] args){
7
8 try {
9
10 DatagramSocket socket = new DatagramSocket(9999);
11 ServerThread sThread = new ServerThread(socket);
12 sThread.start();
13
14 } catch (SocketException e) {
15
16 e.printStackTrace();
17 }
21 }
24 }
- 接收端线程文件
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
7 public class ServerThread extends Thread{
8
9 DatagramSocket socket = null;
10
11 public ServerThread(DatagramSocket socket) {
12 super();
13 this.socket = socket;
14 }
15
16 @Override
17 public void run() {
18 super.run();
19
20 try {
21 // socket = new DatagramSocket(9999);
22
23 //建立数据包
24 byte []buf = new byte[1024];
25 DatagramPacket packet = new DatagramPacket(buf, buf.length);
26 System.out.println( "服务器开始运行...." );
27 while(true) {
28
29 //接收客户端数据
30 socket.receive(packet);
31
32 //读取数据包的内容
33 String data = new String(buf, 0, packet.getLength());
34 System.out.println("我是服务器,接收到客户端的消息:"+data);
35
36 //发送,先获取客户端信息
37 InetAddress address = packet.getAddress();
38 int port = packet.getPort();
39 byte []str = "服务器响应:你好".getBytes();
40 DatagramPacket packet2 = new DatagramPacket(str, str.length,address,port);
41 socket.send(packet2);
42
43 }
44
45 } catch (SocketException e) {
46 e.printStackTrace();
47 } catch (IOException e) {
48 // TODO Auto-generated catch block
49 e.printStackTrace();
50 }
51 finally {
52 socket.close();
53 }
54
55 }
56 }
UDP发送端
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.text.SimpleDateFormat;
7 import java.util.Date;
8 import java.util.Scanner;
9
10 public class Client {
11
12 public static void main(String[] args) throws IOException{
13
14 DatagramSocket socket = null;
15
16 try {
17
18 socket = new DatagramSocket();//udp不用端口号
19
20 while(true) {
21 //时间
22 Date myDate = new Date();
23 SimpleDateFormat dFormat = new SimpleDateFormat("HH:mm:ss");
24 //发送信息
25 InetAddress address = InetAddress.getLocalHost();//取得服务器地址
26 int port = 9999;
27
28 Scanner input = new Scanner(System.in);//改为输入发送
29 String inContent ="\r\n" + dFormat.format(myDate) + "\r\n" +"黄哥哥说:"+ input.next();
30
31 byte []str = inContent.getBytes();
32 DatagramPacket packet2 = new DatagramPacket(str, str.length,address,port);//InetAddress.getByName( "192.168.4.198" )
33 socket.send(packet2);
34
35 //接收信息
36 //建立数据报包
37 byte []buf = new byte[1024];
38 DatagramPacket packet = new DatagramPacket(buf, buf.length);
39
40 //接收服务器信息
41 socket.receive(packet);
42
43 //读取数据包的内容
44 String data = new String(buf, 0, packet.getLength());
45 System.out.println(data);
46
47 }
48 } catch (SocketException e) {
49 // TODO Auto-generated catch block
50 e.printStackTrace();
51 }finally {
52 //关闭
53 socket.close();
54 }
55
56 }
57 }
运行效果
- 发送端发送消息,接收端回应

2.接收端收到的消息

UDP接收端和发送端_Socket编程的更多相关文章
- Java网络编程(UDP协议:发送端)
package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...
- C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...
- 网络编程_UDP协议_发送端与接收端
创建UDP传输的发送端 : 1.建立udp的socket服务 2.将要发送的数据封装到数据包中 3.通过udp的socket服务 将数据包发送出去 4.关闭socket服务(因为调用了系统 ...
- java实现udp发送端和接收端
发送端: package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat ...
- Flink中发送端反压以及Credit机制(源码分析)
上一篇<Flink接收端反压机制>说到因为Flink每个Task的接收端和发送端是共享一个bufferPool的,形成了天然的反压机制,当Task接收数据的时候,接收端会根据积压的数据量以 ...
- c/c++ 网络编程 UDP 发送端 bind 作用
网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目 ...
- Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...
- 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)
UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...
- Udp发送端和接收端
//UdpReceive.java /* 定义udp的接收端. 思路: 1.定义udpSocket服务.一般会监听一个端口,事实上就是这个接收网络应用程序定义一个数字标示. 2.定义一个数据包.用来存 ...
随机推荐
- ES6扩展——模板字符串
${ } 模板字符串占位符 需要用反引号` ` 1.模板字符串 `${变量}` const xiaoming = { name:'xiaoming', age:14, say1:function(){ ...
- MPI集群搭建
高性能计算 ubantu下集群搭建 参考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重别人的知识产权),一些细节 ...
- 简单三分钟,本地搭建 k8s
使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的 ...
- java基础之ThreadLocal
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序.Thr ...
- Pytest系列(22)- allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 上一篇文章介绍了两种allu ...
- openswan协商流程之(七):main_inR3
主模式第六包(收包):main_inR3 1. 序言 main_inR3()函数是ISAKMP协商过程中第一阶段的最后一个报文的接收处理函数,它的作用同main_inI3_outR3()部分功能相同: ...
- tornado2.2安装教程
最近要用到vxworks 系统,所以避免不了要安装tornado 软件,进行相关的开发. 自己在安装过程中遇到了点点问题,这里记录下来,免得以后再次安装时遇到同样的问题. 1. 首先提供一个tor ...
- EL-ADMIN学习笔记
一,支持接口限流,避免恶意请求导致服务层压力过大 常见的限流功能一般有两个关注点: 1.限流原则,即以什么样的条件对请求进行识别以及放行.常见的作法是给予每个调用API的系统不同的唯一编码,用于监控某 ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- C语言学习笔记---2.C语言数据类型
1.C语言基本数据类型 1.1 int类型 int类型是有符号整型,即int类型的值必须是整数,可以是正整数.负整数或零.其取值范围依计算机系统而异.一般而言,储存一个int要占用一个机器字长. 声明 ...