UDP 网络通信 C#
接收端
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace UDPReceiveTest
{
public partial class Form1 : Form
{
public UdpClient udpClient;
public Thread UdpThread;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
if (UdpThread != null)
{
UdpThread.Abort();
Thread.Sleep(TimeSpan.FromMilliseconds(500d));
}
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
if (udpClient != null)
{
UdpThread.Abort();
Thread.Sleep(TimeSpan.FromMilliseconds(500d));
udpClient.Close();
}
try
{
udpClient = new UdpClient(int.Parse(txtPort.Text));
UdpThread = new Thread(new ThreadStart(UdpReciveThread));
UdpThread.Start();
}
catch (Exception y)
{
MessageBox.Show(this, y.Message, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
this.Dispose(true);
}
}
private void button1_Click(object sender, EventArgs e)
{
txtMessage.Text = string.Empty;
}
delegate void SetTextCallback(IPEndPoint remoteHost, byte[] buf, string bufs);
//接收数据线程
void UdpReciveThread()
{
IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName);
IPEndPoint remoteHost = new IPEndPoint(IPAddress.Any, );
while (udpClient != null &&Thread.CurrentThread.ThreadState.Equals(ThreadState.Running))
{
try
{
byte[] buf = udpClient.Receive(ref remoteHost);
string bufs = Encoding.UTF8.GetString(buf);
txtMessage.Text += remoteHost.Address.ToString() + "说:" +Environment.NewLine;
txtMessage.Text += bufs + Environment.NewLine;
}
catch (Exception y)
{
}
}
txtMessage.Text += "结束..." + (char);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
udpClient.Close();
UdpThread.Abort();
}
catch
{
}
}
}
}
发送端

using System;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
namespace UDPSendTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSend_Click(object sender, EventArgs e)
{
try
{
UdpClient uc = new UdpClient(txtIP.Text, int.Parse(txtPort.Text));
byte[] sendbuf = Encoding.UTF8.GetBytes(txtMessage.Text);
uc.Send(sendbuf, sendbuf.Length);
}
catch (Exception y)
{
MessageBox.Show(this, y.Message, "发送失败", MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
}
}
UDP 网络通信 C#的更多相关文章
- 基于FPGA的光口通信开发案例|基于Kintex-7 FPGA SFP+光口的10G UDP网络通信开发案例
前言 自著名华人物理学家高锟先生提出"光传输理论",实用化的光纤传输产品始于1976年,经历了PDH→SDH→DWDM→ASON→MSTP的发展历程.本世纪初期,ASON/OADM ...
- Java中的TCP/UDP网络通信编程
127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...
- Java TCP/UDP网络通信编程
本文转自:http://www.cnblogs.com/cdtarena/archive/2013/04/10/3012282.html 网络应用中基本上都是TCP(Transmission Cont ...
- TCP、UDP网络通信
IP地址和端口号 端口号是用两个字节(16位的二进制数)表示的,它的取值范围是0~65535,其中,0~1023之间的端口号用于一些知名的网络服务和应用, 用户的普通应用程序需要使用1024以上的端口 ...
- Linux C/C++ UDP 网络通信
昨晚 Vv 想让我给她讲讲网络编程,于是我就傻乎乎的带她入了门... 以下内容为讲课时制作的笔记- 1. socket() 函数 1.1 头文件 #include<sys/socket.h> ...
- UDP网络通信OSC 协议
使用方法 ofxOscMessage mesg; mesg.setAddress("m"); mesg.addIntArg(); mesg.addIntArg(); mesg.ad ...
- UDP网络通信
网络概念 一.目的 二.IP地址 三.端口 一.目的 目的 : 主要用于让两个用户端的服务器或者客户端,可以实现资源共享和信息传递 二.IP地址 1.作用 : 计算机网络中一台计算机的标识 2.种类 ...
- Java 网络通信(TCP/UDP)
1.InetAdress类 与 Socket类 >InetAdress >Socket 2.TCP/IP协议簇 客户端: 创建 Socket:根据指定服务端的 IP 地址或端口号构 ...
- Linux socket网络编程基础 tcp和udp
Socket TCP网络通信编程 首先,服务器端需要做以下准备工作: (1)调用socket()函数.建立socket对象,指定通信协议. (2)调用bind()函数.将创建的socket对象与当前主 ...
随机推荐
- canvas模拟重力效果
总结 速度和加速度是动画的基础元素,其中两者都是向量,包括了一个重要因素:方向. 要学会应用 分解 和 合成 ,将速度或加速度分解到x.y轴上,然后将每条轴上的加速度或速度相加,然后再分别与物体的位置 ...
- Ubuntu14.04下MySQL的安装
1.输入 sudo apt-get install mysql-server 2.继续执行后,需要设定MySQL密码. 3.再次输入密码. 4.之后就安装成功了,输入mysql -u root -p进 ...
- Mybatis——oracle 的模糊查询 和 日期处理
第一种 1 <if test="AGTNAM !=null and AGTNAM !=''"> <![CDATA[and AGTNAM like concat(c ...
- C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)
封装: 封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 封装的意义在于保护或者防止代码(数据)被我们无意中破坏. 封装既可以封装成员变量,又可以封装成 ...
- 系统间通信(8)——通信管理与RMI 上篇
1.概述 在概述了数据描述格式的基本知识.IO通信模型的基本知识后.我们终于可以进入这个系列博文的重点:系统间通信管理.在这个章节我将通过对RMI的详细介绍,引出一个重要的系统间通信的管理规范RPC, ...
- linux(本机)配置域名
hosts是一个没有扩展名的系统文件, 其作用就是将主机名映射到对应的ip地址. 当用户执行一条ping命令时(如ping www.abc.com),系统会首先自动从hosts文件中寻找www.abc ...
- NSTimer内存泄漏导致控制器不调用dealloc
创建定时器会在一定的间隔后执行某些操作,一般大家会这样创建定时器,这样创建的定时,self对定时器有个引用,定时器对self也有个引用,造成了循环引用,最终造成了内存泄漏,如果定时器在做下载的操作就会 ...
- linux远程登陆其他主机并执行命令的若干方式
一.命令行登陆 ssh后,一定后边加双引号 写命令,否则命令实在本地执行的,多条命令的话用双引号隔开, ssh user@remoteNode "cd /home ; ls" 二. ...
- .net社区
英文社区: 名称:MSDN 地址:http://msdn.microsoft.com/zh-cn/default.aspx 描述:这个网站是大家学.Net的初始网站,也是.net方面官方和权威的资料, ...
- NAnt0.92版本首次在windows 8.1的机子上运行报错的问题解决
在官网上下载的0.92版本,各方面都配置好之后,用命令行运行,却提示报错,如下: 具体的错误提示文字是这样的: 获取ConfigurationFileLocation异常. System.Securi ...