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.定义一个数据包.用来存 ...
随机推荐
- PyQt4制作GUI
时间:2018-11-30 记录:byzqy 标题:PyQt4入门学习笔记(一) 地址:https://www.cnblogs.com/chuxiuhong/p/5865201.html 标题:PyQ ...
- AI 常见术语总结
BN(Batch-normalization)在一层的输出上计算所有特征映射的均值和标准差,并且使用这些值规范化它们的响应.因此使得所有神经图(neural maps)在同样范围有响应,而且是零均 ...
- Kickstart部署之NFS架构
原文转自:https://www.cnblogs.com/itzgr/p/10200615.html作者:木二 目录 一 准备 1.1 完整架构:Kickstart+DHCP+NFS+TFTP+PXE ...
- Sentry For React 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!
内容源于:https://docs.sentry.io/platforms/javascript/guides/react/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - ...
- elsa-core:4.ASP.NET Core Server with Elsa Dashboard
在本快速入门中,我们将了解一个最小的 ASP.NET Core 应用程序,该应用程序承载 Elsa Dashboard 组件并将其连接到 Elsa Server. ElsaDashboard + Do ...
- Gitlab - 安装的社区版 Gitlab-ce,解决访问网页报502-Whoops, GitLab is taking too much time to respond的问题
问题背景 在自己虚拟机(centos7)上装了 Gitlab-ce,就是社区版的 Gitlab,版本是 13.0+ 问题描述 浏览器访问 Gitlab 网站,报 502 问题翻译 502-Whoops ...
- AI:用软件逻辑做硬件爆款
"我们的野心不止那么一点点." 百度集团副总裁.百度智能生活事业群组(SLG)总经理.小度CEO景鲲曾多次对外表达过这样的观点. 在2021年百度世界大会上,小度又一口气发布了四款 ...
- .NET 6 RC1 正式发布
昨天晚上微软发布了.NET 6的两个RC版本中的第一个版本,该版本将于11月正式发布,作为在开源MIT协议下整合所有不同的.NET开发模组件的开源跨平台实现.这是一个从2014年开始,持续多年的,以改 ...
- weblogic漏洞分析之CVE-2017-10271
weblogic漏洞分析之CVE-2017-10271 一.环境搭建 1)配置docker 这里使用vulhub的环境:CVE-2017-10271 编辑docker-compose.yml文件,加入 ...
- pip更新升级和删除包
pip检测更新命令:pip list –outdated pip升级包命令:pip install --upgrade packagename pip卸载包命令:pip uninstall packa ...