基于UDP协议的程序设计
使用UdpClient类进行编程
UdpClient类的使用方法
第一阶段 创建UdpClient实例
UdpClient udpClient = new UdpClient();
IPAddress remoteAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint iep = new IPEndPoint(remoteAddress, );
第二阶段 数据发送
byte[] sendBytes = System.Text.Encoding.Unicode.GetBytes("Hello C#");
udpClient.Send(sendBytes,sendBytes.Length,iep);
第二阶段 数据接收
IPEndPoint iep2 = new IPEndPoint(IPAddress.Any, );
byte[] receiveBytes = udpClient.Receive(ref iep2);
string getData = System.Text.Encoding.Unicode.GetString(receiveBytes);
第三阶段 连接关闭
udpClient.Close();
一般常用声明的方式如下
1 UdpClient udpClient2 = new UdpClient("127.0.0.1",8000);
2 udpClient2.Send(sendBytes, sendBytes.Length);
测试代码:
服务器程序:
class Program
{
static void Main(string[] args)
{
StartListener();
Console.ReadLine();
} private static void StartListener()
{
UdpClient udpServer = new UdpClient(); //服务器方的端口号为8000 IPEndPoint myHost = null; try
{
while(true)
{
Console.WriteLine("等待接收...");
byte[] getBytes = udpServer.Receive(ref myHost);
string getString = Encoding.Unicode.GetString(getBytes, , getBytes.Length);
Console.WriteLine("接收信息:{0}",getString);
if (getString == "quit")
break; //向客户端回送消息
string sendString = "你好,Client";
Console.WriteLine("发送消息:{0}", sendString);
byte[] sendBytes = Encoding.Unicode.GetBytes(sendString);
udpServer.Send(sendBytes, sendBytes.Length, "127.0.0.1", ); } udpServer.Close();
Console.WriteLine("Client已经退出,请按回车键退出"); }
catch(Exception e)
{
Console.WriteLine(e.Message);
} }
}
客户端程序:
class Program
{
static void Main(string[] args)
{
string sendString = "客户端发送";
Send(sendString);
Send("quit");
Console.WriteLine();
} private static void Send(string sendString)
{
UdpClient udpClient = new UdpClient();
try
{
Console.WriteLine("向服务器发送数据:{0}",sendString);
byte[] sendBytes = Encoding.Unicode.GetBytes(sendString);
udpClient.Send(sendBytes, sendBytes.Length, "127.0.0.1", );
if(sendString == "quit")
{
Console.WriteLine("已经向对方发送quit消息,请按回车键退出程序");
return;
} IPEndPoint myHost = null;
byte[] getBytes = udpClient.Receive(ref myHost);
string getString = Encoding.Unicode.GetString(getBytes);
Console.WriteLine("接收信息:{0}",getString);
udpClient.Close();
Console.ReadLine(); }
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
运行结果:
服务器

客户端

当然,可以做成从控制台读取文本再进行发送。
基于UDP协议的程序设计的更多相关文章
- 基于UDP协议模拟的一个TCP协议传输系统
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...
- 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...
- JAVA基础知识之网络编程——-基于UDP协议的通信例子
UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...
- 基于UDP协议的控制台聊天
这几天学了java的网络编程弄出一个基于UDP协议的聊天工具 功能 添加并且备注好友(输入对方的ip) 删除好友 查看好友列表 用java写的控制台程序导出可执行程序后不能双击打开 还需要些一个脚本文 ...
- 基于UDP协议的网络编程
UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象. Java使用DatagramSock ...
- 网络编程应用:基于UDP协议【实现文件下载】--练习
要求: 基于UDP协议实现文件下载 发送方–请求–接收方发送文件–发送方接收文件 代码: 发送方: package Homework1; import java.io.File; import jav ...
- 基于UDP协议的socket编程
UDP协议特点: 1.无连接.服务端与客户端传输数据之前不需要进行连接,且没有超时重发等机制,只是把数据通过网络发送出去.也正是因为此特点,所以基于UDP协议的socket的客户端在启动之前不需要先启 ...
- 基于UDP协议的控制台聊天程序(c++版)
本博客由Rcchio原创,转载请告知作者 ------------------------------------------------------------------------------- ...
- Learning-Python【30】:基于UDP协议通信的套接字
UDP协议没有粘包问题,但是缓冲区大小要足够装数据包大小,建议不要超过 512 服务端: # 服务端 import socket server = socket.socket(socket.AF_IN ...
随机推荐
- ModernUI教程:使用WPF4.0
Modern UI 同时支持WPF4.0和4.5.下载包中包含了这两个版本的程序集.当你使用Nuget下载时,会根据你选择的运行时版本自动选择对应的版本下载.而Visual Studio2012的模板 ...
- 3Dmax 创建物体
扩展基本体-切角长方体: 增加边: 删除边:在边选择模式下, 选择想要删除的边, 按下ctrl+backsapce
- JavaScript变量的作用域和函数的作用域的区别
变量作用域和函数作用域都涉及到变量值的变化,本文旨在让大家明白他们之间的区别 变量的作用域: 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接 ...
- Go加密解密之DES
一.DES简介 DES(Data Encryption Standard)是对称加密算法,也就是加密和解密用相同的密钥.其入口参数有三个:key.data.mode.key为加密解密使用的密钥,dat ...
- 360demo--关于WM_GETMINMAXINFO
在duilib的demo中,看到这么一段: LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa ...
- 第十五章:输入和输出(I/O)
一:流分类 抽象基类:InputStream和Reader 抽象类不能用于创建模板哦! OutputStream和Writer 方向: 以内存为中心! 输入流(读) 输出流(写) 数据 ...
- zabbix_server的自动发现,实现批量添加主机,并链接到模板
一.需求 zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么.但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多.这时,z ...
- [转]Spring3核心技术之事务管理机制
原文地址:http://chouyi.iteye.com/blog/1675199 Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案. http://jinnians ...
- [转]关于jquery中html()、text()、val()的区别
原文地址:http://www.cnblogs.com/xiaolifeidao/p/3715830.html .html()用为读取和修改元素的HTML标签 对应js中的innerHTML . ...
- [转]js中confirm实现执行操作前弹出确认框的方法
原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在 ...