C#UDP通讯UdpClient
来源:互联网 发布:电子相册制作软件宝宝 编辑:程序博客网 时间:2024/06/16 09:02
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; <span style="color:#ff0000;"> 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);</span> } 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 { } } }//循环接收数据 }
0 0
- 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通讯
- ios开发学习笔记--数据持久化之数据库(SQLite.swift)和FMDB
- 与Service通信的简单总结
- Android Studio 设置文件头注释模板
- viewPager的 transformPage方法中position含义
- 正则表达式
- C#UDP通讯UdpClient
- 限制一个或多个textfiled输入长度及内容
- shell 参数,shell与Java 交互参数
- xcode安装 插件
- NSIS自删除
- Lua系统函数
- spring集成jms用法
- bzoj 4553: [Tjoi2016&Heoi2016]序列
- [Android]ListView中分割线的设置