• UDP接收端


    1. 接收端启动文件
 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. 接收端线程文件
 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 }

 

  • 运行效果


  1. 发送端发送消息,接收端回应

2.接收端收到的消息

UDP接收端和发送端_Socket编程的更多相关文章

  1. Java网络编程(UDP协议:发送端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

  2. C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全

    简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...

  3. 网络编程_UDP协议_发送端与接收端

    创建UDP传输的发送端 : 1.建立udp的socket服务   2.将要发送的数据封装到数据包中   3.通过udp的socket服务 将数据包发送出去   4.关闭socket服务(因为调用了系统 ...

  4. java实现udp发送端和接收端

    发送端: package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat ...

  5. Flink中发送端反压以及Credit机制(源码分析)

    上一篇<Flink接收端反压机制>说到因为Flink每个Task的接收端和发送端是共享一个bufferPool的,形成了天然的反压机制,当Task接收数据的时候,接收端会根据积压的数据量以 ...

  6. c/c++ 网络编程 UDP 发送端 bind 作用

    网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目 ...

  7. Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

    1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: package com.himi.updDemo1; import java.io.IOException ...

  8. 基于C#的UDP通信(使用UdpClient实现,包含发送端和接收端)

    UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小, ...

  9. Udp发送端和接收端

    //UdpReceive.java /* 定义udp的接收端. 思路: 1.定义udpSocket服务.一般会监听一个端口,事实上就是这个接收网络应用程序定义一个数字标示. 2.定义一个数据包.用来存 ...

随机推荐

  1. Dockerfile优化——supervisor服务

    一.理解supervisor(supervisor服务不仅在容器中可用,在宿主机中也适用) 1.Dockerfile中的CMD可以指定启动容器后执行的第一个命令,但是当有多个服务进程需要启动的时候,就 ...

  2. NOIP模拟13「工业题·卡常题·玄学题」

    T1:工业题 基本思路   这题有一个重要的小转化: 我们将原来的函数看作一个矩阵,\(f(i,j-1)*a\)相当于从\(j-1\)向右走一步并贡献a,\(f(i-1,j)*b\)相当于从\(i-1 ...

  3. uniapp 获取用户手机号

    参考资料: 微信小程序官方文档 uniapp开发微信小程序获取用户手机号 页面增加一个按钮 <button open-type="getPhoneNumber" @getph ...

  4. python库--pandas--Series

    方法 返回数据类型 参数 说明 Series(一维)       .Series() Series 实例s 创建一维数据类型Series data=None 要转化为Series的数据(也可用dict ...

  5. 批量ip段/子网转换

    #coding=utf-8 import re import struct from sys import argv class CIDRHelper(object): def ipFormatChk ...

  6. vue-cli3 创建多页面应用项目

    1.创建vue项目 cmd命令执行  vue create ruc-continuing  创建vue项目,项目名称:ruc-continuing 选择一个 preset(预置项),或自定义: 选择自 ...

  7. UVA 506 System Dependencies(模拟 烂题)

    https://vjudge.net/problem/UVA-506 题目是给出了五种指令,DEPEND.INSTALL.REMOVE.LIST.END,操作的格式及功能如下: DEPEND item ...

  8. jsp连接mysql数据库 ——查询

    <%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%& ...

  9. Mybatis中使用级联查询,一对多的查询

    一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...

  10. lightweight openpose 入门实操笔记(pytorch环境)

    最近有个小项目要搞姿态识别,简单调研了一下2D的识别: 基本上是下面几种 (单人)single person 直接关键点回归 heatmap,感觉其实就是把一个点的标签弄成一个高斯分布 (多人)mul ...