UDP不可靠通信,不建立连接,只发送一次数据,不管对方是否接收

服务器端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;namespace UDPsocket
{class Program{static void Main(string[] args){Socket UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//设置udp网络传输UDPSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566));//设置服务器的ip的端口号,用这个ip和端口号进行接收和发送数据EndPoint point = new IPEndPoint(IPAddress.Any, 0);//定义一个Endpoint对象,用来存储传数据过来的客户端的ip 和端口号byte[] date = new byte[1024];//定义字节数组用来存储传来的数据int length = UDPSocket.ReceiveFrom(date, ref point);//接收客户端的数据string str = Encoding.UTF8.GetString(date, 0, length);Console.WriteLine(str);string str1 = "已连接服务器";byte[] date1 = Encoding.UTF8.GetBytes(str1);UDPSocket.SendTo(date1, point);//向客户端发送数据Console.ReadKey(); }}
}

1:创建socket,将通信设置为内网,udp通信

Socket UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//设置udp网络传输

2:绑定服务器的端口和ip

UDPSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566));//设置服务器的ip的端口号,用这个ip和端口号进行接收和发送数据

3:ReceriverForm(date ref point)接收二进制数据,用point 记录发送数据过来的端口和ip

EndPoint point = new IPEndPoint(IPAddress.Any, 0);//定义一个Endpoint对象,用来存储传数据过来的客户端的ip 和端口号byte[] date = newbyte[1024];//定义字节数组用来存储传来的数据int length = UDPSocket.ReceiveFrom(date, ref point);//接收客户端的数据

4:SentTo(date ,point) 向point地址的客户端发送数据

byte[] date1 = Encoding.UTF8.GetBytes(str1);

UDPSocket.SendTo(date1, point);//向客户端发送数据

客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;namespace UDPSocketClient
{class Program{static void Main(string[] args){Socket udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//声明socket对象,来进行UDP不可靠传输//发送数据string str = "请求进行UDP传输";byte[] date = Encoding.UTF8.GetBytes(str);EndPoint point = new IPEndPoint(IPAddress.Parse("192.168.43.92"),5566);//客户端的数据要发送到这个地址的服务器上udpSocket.SendTo(date,point);//将数据发送到指定地址上//接收数据byte[] date1 = new byte[1024];EndPoint point1 = new IPEndPoint(IPAddress.Any, 0);//用来存储是哪个对象发送的数据,记录他的ip和端口号int length = udpSocket.ReceiveFrom(date1,ref point1);//接收服务器端发送的内容string str1 = Encoding.UTF8.GetString(date1, 0, length);//输出服务器用来接收数据的IP和端口号和内容Console.WriteLine("服务器的ip是{0},端口号是{1}",(point1 as IPEndPoint).Address,(point1 as IPEndPoint).Port);Console.WriteLine(str1);Console.ReadKey();}}
}

因为UDP是不可靠传输,不需要建立连接,只需在每次发送数据时指定数据的接收方即可

1:创建socket,将通信设置为内网,udp通信

Socket udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//声明socket对象,来进行UDP不可靠传输

2:ReceriverForm(date ref point)接收二进制数据,用point 记录发送数据过来的端口和ip

//接收数据byte[] date1 = newbyte[1024];

EndPoint point1 = new IPEndPoint(IPAddress.Any, 0);//用来存储是哪个对象发送的数据,记录他的ip和端口号int length = udpSocket.ReceiveFrom(date1,ref point1);//接收服务器端发送的内容

3:SentTo(date ,point) 向point地址的客户端发送数据

string str = "请求进行UDP传输";

byte[] date = Encoding.UTF8.GetBytes(str);

EndPoint point = new IPEndPoint(IPAddress.Parse("192.168.43.92"),5566);//客户端的数据要发送到这个地址的服务器上

udpSocket.SendTo(date,point);//将数据发送到指定地址上

利用UDPClient代替socket,UDPClient对象是一个已近封装好的socket,不需要我们自己设置socket

服务器端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;namespace UDPClient1{//服务器端class Program{static void Main(string[] args){UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566));//定义好服务器的ip和端口号//接收数据IPEndPoint point = new IPEndPoint(IPAddress.Any,0);//定义一个对象来存储客户端的ip和端口号byte[] date = client.Receive(ref point);//接收客户端的数据,并将数据来源存储在point中string str = Encoding.UTF8.GetString(date);Console.WriteLine(str);//发送数据string str1 = "已近连接服务器";byte[] date1 = Encoding.UTF8.GetBytes(str1);client.Send(date1, date1.Length, point);//将date1数据发送到point地址上client.Close();//关闭Console.ReadKey();}}
}

1:绑定服务器端的ip和端口号

UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566));//定义好服务器的ip和端口号

//接收数据

2:利用sent(date,int ,point)向point地址发送数据

string str1 = "已近连接服务器";

byte[] date1 = Encoding.UTF8.GetBytes(str1);

client.Send(date1, date1.Length, point);//将date1数据发送到point地址上

3:利用Receive(ref point)接收数据,利用point记录发送数据的来源

//接收数据

IPEndPoint point = new IPEndPoint(IPAddress.Any,0);//定义一个对象来存储客户端的ip和端口号byte[] date = client.Receive(ref point);//接收客户端的数据,并将数据来源存储在point中string str = Encoding.UTF8.GetString(date);

4:关闭UDPClient对象

client.Close();//关闭

客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;namespace UDPSock
{class Program{static void Main(string[] args){UdpClient UDPclient = new UdpClient();//创建UDPClient对象,这里不需要指定地址,每次发送时指定发送地址IPEndPoint point = new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566);//将数据发送到这个地址上去//发送数据string str = "请求建立UDP连接";byte[] date = Encoding.UTF8.GetBytes(str);UDPclient.Send(date,date.Length,point);//接收数据byte[] date1 = UDPclient.Receive(ref point);//将数据的来源存储在point里string str1 = Encoding.UTF8.GetString(date1);Console.WriteLine(str1);UDPclient.Close();//关闭Console.ReadKey();}}
}

1:udp不需要建立连接,在要发送数据时指定发送数据的地址即可

UdpClient UDPclient = new UdpClient();//创建UDPClient对象,这里不需要指定地址,每次发送时指定发送地址

2:sent(date,int,point)发送数据

IPEndPoint point = new IPEndPoint(IPAddress.Parse("192.168.43.92"), 5566);//将数据发送到这个地址上去

string str = "请求建立UDP连接";

byte[] date = Encoding.UTF8.GetBytes(str);

UDPclient.Send(date,date.Length,point);

3:receive(ref point)接收数据,将数据的来源记录到point上

//接收数据byte[] date1 = UDPclient.Receive(ref point);//将数据的来源存储在point里string str1 = Encoding.UTF8.GetString(date1);

4:关闭UDPClient

UDPclient.Close();

https://www.cnblogs.com/zhangyang4674/p/11408467.html

Socket简单学习之UDP通信相关推荐

  1. python共享内存通信mapofview_python map eval strPython socket模块实现的udp通信功能示例...

    本文实例讲述了Python socket模块实现的udp通信功能.分享给大家供大家参考,具体如下: socket介绍 socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要 ...

  2. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  3. Java学习笔记—UDP通信

    一.UDP通信原理 UDP协议(用户数据报协议 User Datagram Protocol)是一种无连接通信协议, 即在数据传输时数据发送端和接收端不建立逻辑链接.因此UDP协议是一种 不可靠的网络 ...

  4. 2-3:套接字(Socket)编程之UDP通信,sockaddr,sockaddr_in,recvfrom,sendto

    文章目录 一:回顾 二:彻底了解套接字和struct socket结构 (1)一切皆文件-文件描述符-套接字描述符 (2)struct socket结构 A:struct socket结构体作用 B: ...

  5. qt 实现UDP通信简单案例

    实现效果 实现功能 创建两个界面,可以通过udp进行通信,并显示通信内容. 界面部分由代码实现,并使用qss简单美化. udp通信由创建套接字,绑定端口号,发送和接收数据函数完成. 代码实现 创建第一 ...

  6. 2-4:套接字(Socket)编程之TCP通信

    文章目录 一 TCP通信服务端和客户端--和UDP区别 (1)服务端 (2)客户端 二:TCP通信-多进程/线程 (1)多进程版本 (2)多线程版本 (3)线程池版本 一 TCP通信服务端和客户端-- ...

  7. linux网络编程IPv6socket,简单的IPv6 UDP/TCP socket编程 -- 两台Linux实现简单的ipv6通信...

    配置: 1.两台linux用网线直接相连 2.手动配置两台linux的ipv6地址为: ifconfig eth0 add 2001:da8:e000::1:1:1 ifconfig eth0 add ...

  8. socket网络编程及通过socket接口实现一个自我通信的简易UDP服务器

    网络编程socket基础 认识socket套接字 先用一张图引出socket的内容 根据上面的图示我们可以知道socket其实是位于应用层与传输层之间的一层软件抽象层.它是一组接口,在后面的部分我们会 ...

  9. C# 通过socket实现UDP 通信

     本文章已收录于: UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎.在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重.但是由于UDP的特性:它不属于连接型协 ...

最新文章

  1. AI一分钟 | 科大讯飞2017年度财报:营收54.45亿元,净利润4.35亿元;滴滴首谈无人驾驶战略:只做软件不造车
  2. .net core webapi 通过swagger生成说明文档
  3. golang 中的 init 和 main函数
  4. VIM 多行注释与取消
  5. 如何解决AIX的文件系统故障
  6. 《Java程序设计》 第五周学习总结
  7. 基于IMAGE法的房间回响模型创建、C++代码实现、matlab仿真
  8. 企业实战_02_Redis基础
  9. DHCP租用信息导出方案
  10. Python爬虫之pyppeteer的使用(爬虫、获取cookie、截屏插件、防爬绕过)
  11. [地产]“用90%的时间考虑失败”——李嘉诚(长江实业集团董事长)
  12. 基于Flex的迷你工作流的设计与实现(序)
  13. python f.write 保存图片到路径_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...
  14. mysql getnum函数_Mysql中实现提取字符串中的数字的自定义函数分享
  15. echarts设置标题样式_Pyecharts 全局配置项之标题配置项
  16. C语言--------学生管理系统(源代码)
  17. 【0610】【数据结构】【C语言版视频教程】【 全52讲 完整版】
  18. Android智能硬件开发心得总结(一)
  19. Android入门实践简单小项目:健康饮食
  20. endnote x9破解版怎么导入word 2019使用呢?

热门文章

  1. WPS----excel找到重要数据(条件格式,排序,筛选)学习笔记(小白)
  2. python大鱼吃小鱼_GitHub - freex/OzgGameEatFish: OzgGame - 大鱼吃小鱼,cocos2d-x-3.6
  3. 如何用不到10元人民币 DIY 一个 YubiKey
  4. java 三种工厂模式
  5. Android 全局背景 apk,自定义全局透明软件下载-一键全局透明自定义 安卓版v1.0-PC6安卓网...
  6. 计算机开题报告研究方向是指,计算机开题报告导师评语
  7. input输入框如何处理中英文输入
  8. 作为菜鸟,你应该如何学习知识图谱?- 菜鸟小白篇
  9. 《象google一样开会》读书笔记
  10. 詹姆斯:全明星主帅是对斯波的肯定 赢球多亏防守