UDP SOCKET网络通信 C#
2016-04-29 10:37
495 查看
接收端
发送端
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 Thread UdpThread; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string strHostIP = ""; IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName); if (oIPHost.AddressList.Length > 0) strHostIP = oIPHost.AddressList[0].ToString(); this.txtIP.Text = strHostIP; if (UdpThread != null) { UdpThread.Abort(); Thread.Sleep(TimeSpan.FromMilliseconds(500d)); } try { 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() { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Any, int.Parse(txtPort.Text));//接收广播信息,端口是(因为是广播端口是) socket.Bind(iep); EndPoint ep = (EndPoint)iep; Byte[] bytes = new byte[1024]; while (Thread.CurrentThread.ThreadState.Equals(ThreadState.Running)) { int message = socket.ReceiveFrom(bytes, ref ep);//接收发送的信息 string bufs = Encoding.UTF8.GetString(bytes); txtMessage.Text += (ep as IPEndPoint).Address.ToString() + "说:" +Environment.NewLine; txtMessage.Text += bufs + Environment.NewLine + Environment.NewLine; } txtMessage.Text += "结束..." + (char)13; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { UdpThread.Abort(); } catch { } } } }
发送端
using System; using System.Net; 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) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,ProtocolType.Udp); IPEndPoint iep1 = new IPEndPoint(IPAddress.Parse(txtIP.Text),int.Parse(txtPort.Text));//进行地址的广播,广播端口 byte[] data = Encoding.ASCII.GetBytes(txtMessage.Text); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); sock.SendTo(data, iep1);//发送字符 sock.Close(); } } }
相关文章推荐
- HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解
- IOS SCNetworkReachability和Reachability监测网络连接状态
- IOS安装包分发(windows+tomcat+私有证书https)
- Ambiguous handler methods mapped for HTTP path
- 4月全球域名商新增注册量21强:厦门点媒网络上榜
- HTTP head 详解 (转)
- 常见的网络设备
- 深度卷积网络CNN与图像语义分割
- http服务跟踪及调试工具
- Android中检测手机制式和移动网络类型
- 使用C#的HttpWebRequest模拟登陆网站
- TCP连接的三次握手和四次挥手
- XMLHttpRequest 对象
- OSI 参考模型与TCP/IP 参考模型的比较
- (转)OKhttp封装
- 区块链网络动力学对世界的解构和重构
- OSI七层模型与TCP/IP五层模型
- Android中请求网络
- HTTP知识点总结
- TCP/IP协议详解 卷一 --------UDP