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.定义一个数据包.用来存 ...
随机推荐
- C# - 习题07_计算1分2分5分硬币各有多少枚
时间:2017-09-08 整理:byzqy 题目:现在有1分.2分.5分硬币共100个,总金额为2.46元,请用程序计算出1分.2分.5分各有多少枚,有多少种算法? 这是最近面试遇到的一个题目,刚开 ...
- vim的配置文件
网上一个比较常见的配置文件设置如下,这个配置还是很棒的,尤其创建脚本或者c文件时 " All system-wide defaults are set in $VIMRUNTIME/debi ...
- npm配置镜像及nrm使用
淘宝npm镜像 搜索地址:http://npm.taobao.org/ registry地址:http://registry.npm.taobao.org/ cnpmjs镜像 搜索地址:http: ...
- AQS快速入门
一.模板方法模式 父子类多态,父类中用一个方法调用执行所有所需要的方法: 父类: 子类: 主线程执行时候调用父类的模板方法: 二.AQS思想 sync都是独占锁,lock显示锁也是,只有读写锁是共享锁 ...
- Mybatis简单查询
目录 前言 一.时间区间查询 1.xml中实现 2. Mybatis Plus 方式 二.模糊查询 1.xml中实现 2. Mybatis Plus 方式 前言 好记性不如烂笔头,记录内容,方便日后 ...
- 垃圾分类app--NABCD--团队项目需求与分析
我们的产品是--智能垃圾分类APP,它的设计灵感的来自于"可持续化发展战略,走绿色发展道路",众所周知,垃圾是放错了地方的资源,因此我们团队为了响应国家"垃圾分类&quo ...
- Java技术开发专题系列之【Guava RateLimiter】针对于限流器的入门到精通(针对于源码分析介绍)
Guava包中限流实现分析 RateLimiter 之前的文章中已经介绍了常用的限流算法,而google在Java领域中使用Guava包中的限流工具进行服务限流. 回顾使用案例 Google开源工具包 ...
- Modern PHP interface 接口
The right way /dev/hell Code Response.php 接口 demo: modern-php/├── data│ └── stream.txt└── interfac ...
- VMware安装最新版CentOS7图文教程
https://blog.csdn.net/reticent_man/article/details/80732395 https://blog.csdn.net/q2158798/article/d ...
- html网页乱码
html乱码原因与网页乱码解决方法 html乱码原因与网页乱码解决方法,浏览器浏览网页内容出现乱码符合解决篇(html中文乱码) 造成html网页乱码原因主要是html源代码内中文字内容与html ...