C#UDP通讯UdpClient
来源:互联网 发布:react native vue.js 编辑:程序博客网 时间:2024/05/21 22:32
远程主机强迫关闭了一个现有的连接 红色部分很重要
class UdpClientClass { /// <summary> /// 构建客户端 /// </summary> /// <param name="servierIpAddress">服务器iP地址或者域名</param> /// <param name="sevierPort">服务器监听端口</param> /// <param name="locadPort">本地监听端口</param> /// <param name="timeOut">超时等待时间</param> public UdpClientClass(string servierIpAddress, int sevierPort, int locadPort, int timeOut) { if (FpHelper.CheckIpAddress(ref servierIpAddress) == true) { try { ServerIPE = new IPEndPoint(IPAddress.Parse(servierIpAddress), sevierPort); UdpListenClient = new UdpClient(locadPort);//固定通信端口 UdpListenClient.Client.ReceiveTimeout = 3000; const long IOC_IN = 0x80000000; const long IOC_VENDOR = 0x18000000; const long SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12; byte[] optionInValue = { Convert.ToByte(false) }; byte[] optionOutValue = new byte[4]; UdpListenClient.Client.IOControl((IOControlCode)SIO_UDP_CONNRESET, optionInValue, optionOutValue); } catch (System.Exception ex) { MessageBox.Show("绑定端口失败" + ex.Message.ToString()); } } } /// <summary> /// UDP发送类,绑定了一个固定的端口 /// </summary> private static UdpClient UdpListenClient; public event EventHandler MessageChanged; /// <summary> /// 接收到服务器消息改变后触发的事件 /// </summary> /// <param name="user"></param> public void OnMessageChanged(UdpClientClass fp) { if (MessageChanged != null) { MessageChanged(fp, null); } } /// <summary> /// 服务器端的IP与端口 /// </summary> private IPEndPoint ServerIPE = null; bool IsReceiving = false; public void Send(byte[] data, int len) { int len1 = UdpListenClient.Send(data, len, ServerIPE); if (!IsReceiving) StartAndLsn(); } private Thread ClientRecThread; private void StartAndLsn() { IsReceiving = true; ClientRecThread = new Thread(new ThreadStart(RecF));//启动新线程做接收 ClientRecThread.IsBackground = true; ClientRecThread.Start(); }//启动并且 监听 服务器发来的数据 private void RecF()//接收数据做服务 { byte[] btRec = null; while (IsReceiving) { IPEndPoint remoteIPE = new IPEndPoint(IPAddress.Any, 0); btRec = UdpListenClient.Receive(ref remoteIPE);//UDP接收数据 if (btRec.Length > 0 && remoteIPE.Address == ServerIPE.Address)//只处理特定的服务端的数据 { System.Windows.Forms.MessageBox.Show("res"); } else { } } }//循环接收数据 }
- C#UDP通讯UdpClient
- C#UDP通讯UdpClient
- C#UDP通讯UdpClient
- C#UDP通讯UdpClient
- C#UDP入门|Socket通信|UdpClient通信
- C#UDP入门|Socket通信|UdpClient通信
- C# UDPClient类(通过UdpClient类实现局域网UDP通讯)
- [UDP] C#UDP入门|Socket通信|UdpClient通信
- [UDP] C#UDP入门|Socket通信|UdpClient通信
- udpclient.c
- C#UDP通讯
- [C#]UDP通讯
- UDP通讯(vc与c通讯)
- udp 发送一个整数 udpclient
- C语言 UDP双向通讯仿TCP通讯模式
- UDP通讯
- UDP 通讯
- UDP通讯
- EJB3.0学习笔记---MDB--第一个MDBBean程序:
- CentOS安装Oracle错误解决
- Unity3D 批处理修改LightMap烘培贴图
- mysql学习之认识mysql数据库
- 入职第一天
- C#UDP通讯UdpClient
- windows下安装启动MongoDB
- IPC:Socket
- 字符串中子串替换成新子串 简单实现
- SSL 暗号化を使用した接続
- 通过三层和mvc一步步看架构(一)
- 系统各项底层信息的工具集:Hyperic-Sigar
- 关于Application windows are expected to have a root view controller at the end of application launch
- 十进制转十六进制和冒泡排序