使用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协议的程序设计的更多相关文章

  1. 基于UDP协议模拟的一个TCP协议传输系统

    TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...

  2. 网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

    Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服 ...

  3. JAVA基础知识之网络编程——-基于UDP协议的通信例子

    UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...

  4. 基于UDP协议的控制台聊天

    这几天学了java的网络编程弄出一个基于UDP协议的聊天工具 功能 添加并且备注好友(输入对方的ip) 删除好友 查看好友列表 用java写的控制台程序导出可执行程序后不能双击打开 还需要些一个脚本文 ...

  5. 基于UDP协议的网络编程

    UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象. Java使用DatagramSock ...

  6. 网络编程应用:基于UDP协议【实现文件下载】--练习

    要求: 基于UDP协议实现文件下载 发送方–请求–接收方发送文件–发送方接收文件 代码: 发送方: package Homework1; import java.io.File; import jav ...

  7. 基于UDP协议的socket编程

    UDP协议特点: 1.无连接.服务端与客户端传输数据之前不需要进行连接,且没有超时重发等机制,只是把数据通过网络发送出去.也正是因为此特点,所以基于UDP协议的socket的客户端在启动之前不需要先启 ...

  8. 基于UDP协议的控制台聊天程序(c++版)

    本博客由Rcchio原创,转载请告知作者 ------------------------------------------------------------------------------- ...

  9. Learning-Python【30】:基于UDP协议通信的套接字

    UDP协议没有粘包问题,但是缓冲区大小要足够装数据包大小,建议不要超过 512 服务端: # 服务端 import socket server = socket.socket(socket.AF_IN ...

随机推荐

  1. 【NDK开发】android-ndk r10环境搭建

    1)打开Android开发者的官网http://developer.android.com/找到Develop点击.如果页面打不开,通过代理来访问. 2)进入后再点击Tools 3)进入后在左侧找到N ...

  2. 搭建emacs的go编程语言环境

    关于emacs就不说明了,直接切入主题.关于我的emacs配置,可以直接参考GitHub上的lienhua34/myemacs-conf. go-mode 安装 关于go-mode的安装,可以直接参考 ...

  3. PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))

    PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...

  4. OS存储器管理(三) 虚拟存储器

    基本概念与实现 1)局部性原理 在一段时间内,运行的作业程序仅访问(涉及到)一部分作业代码,即不会涉及整个地址空间.即在一段时间间隔内,仅装入一部分代码,作业照样能正常运行 2)虚拟存储器的引入 作业 ...

  5. java机器学习工具包

    下面是25个Java机器学习的工具&&库列表: 1. Weka 是一个数据挖掘任务机器学习算法的集合.这些算法可以直接应用于数据集或者在你自己的Java代码中调用.Weka 包含 数据 ...

  6. jni的使用方法

    我们可以通过jni来调用c/c++程序,C/C++一般会被作为动态库的形式来供java程序调用 环境 操作系统:Centos6.7 java: openjdk7 依赖包:java7-devel(yum ...

  7. restFull常用注解

    @GET.@POST.@PUT.@DELETE.@HEAD您可以使用它们来绑定根资源或子资源内的 Java 方法与 HTTP 请求方法.HTTP GET 请求被映射到由 @GET 注释的方法,以此类推 ...

  8. dblink连接的目标端 session不断的问题。

    来源于:http://blog.itpub.net/22782896/viewspace-676842/ 1.在使用了dblink的存储过程中,可以显示的手动关闭dblink连接,具体写法如下(测试存 ...

  9. Android Studio 优秀插件汇总

    第一部分 插件的介绍 Google 在2013年5月的I/O开发者大会推出了基于IntelliJ IDEA java ide上的Android Studio.AndroidStudio是一个功能齐全的 ...

  10. 初步认识ajax(个人整理)

    通过使用ajax可以实现页面的部分动态化 ajax可以发送一个请求去服务端,而服务端则发送回一小段数据给客户端,这样就可以避免加载整个页面,因为很多时候页面只需要刷新某一部分的数据,而其他大部分体就不 ...