服务器
void Start() { InitNet(); } Thread myThread; public void InitNet() { IAsyncResult result = null; result = InitUdpNet(); if (result == null) return; bool success = result.AsyncWaitHandle.WaitOne(5000, true); if (!success) { //超时 NetClosed(); Debug.Log("connect Time Out Net will reconnect"); InitNet(); } else { //与socket建立连接成功,开启线程接受服务端数据。 // worldpackage = new List<JFPackage.WorldPackage>(); myThread = new Thread(new ThreadStart(ReceiveSorket)); myThread.IsBackground = true; myThread.Start(); } } private void ReceiveSorket() { while (true) { byte[] data = new byte[1024]; //发送接受信息 recv = newsock.ReceiveFrom(data, ref Remote); Debug.Log(Encoding.Unicode.GetString(data, 0, recv)); newsock.SendTo(data, recv, SocketFlags.None, Remote); } } private IAsyncResult InitUdpNet() { //得到客户机IP IPEndPoint sender = new IPEndPoint(IPAddress.Any, port); newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //绑定网络地址 newsock.Bind(sender); Remote = (EndPoint)(sender); IAsyncResult result = newsock.BeginConnect(Remote, new AsyncCallback(connectCallback), newsock); return result; } private void connectCallback(IAsyncResult asyncConnect) { Debug.LogError("connectSuccess"); } int recv; Socket newsock; EndPoint Remote; int port = 8001; string stringData; // 发送消息 public void SendUdpBroadcasts() { //Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint sender = new IPEndPoint(IPAddress.Broadcast, port); EndPoint Remote = (EndPoint)sender; newsock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);//设置该scoket实例的发送形式 string request = "你好,TEST SEND!";//初始化需要发送而的发送数据 byte[] buffer = Encoding.Unicode.GetBytes(request); newsock.SendTo(buffer, Remote); } public void SendUdp(string str) { byte[] data = new byte[1024]; data = Encoding.Unicode.GetBytes(str); newsock.SendTo(data, data.Length, SocketFlags.None, Remote); } //关闭Socket public void NetClosed() { // Debuger.LogError("NetClosed"); if (newsock != null) { if (newsock.Connected) { newsock.Shutdown(SocketShutdown.Both); newsock.Close(); } } newsock = null; } void OnDestroy() { NetClosed(); }
客户端:
// Use this for initialization void Start() { InitNet(); } // Update is called once per frame void Update() { } Socket server; EndPoint Remote; string input, stringData; public void InitNet() { //获取本机可用IP地址 byte[] data = new byte[1024]; Debug.Log("This is a Client, host name is {0}"+ Dns.GetHostName()); //设置服务IP,设置TCP端口号 IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.0.131"), 8001); //定义网络类型,数据连接类型和网络协议UDP server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(ipep); string welcome = "Hello! "; data = Encoding.ASCII.GetBytes(welcome); server.SendTo(data, data.Length, SocketFlags.None, ipep); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); Remote = (EndPoint)sender; data = new byte[1024]; //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制 //server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100); recv = server.ReceiveFrom(data, ref Remote); Debug.Log("Message received from {0}: "+ Remote.ToString()); Debug.Log(Encoding.ASCII.GetString(data, 0, recv)); myThread = new Thread(new ThreadStart(ReceiveSorket)); myThread.IsBackground = true; myThread.Start(); } Thread myThread; int recv; IPEndPoint remote; //接收数据 private void ReceiveSorket() { while (true) { // server.SendTo(Encoding.ASCII.GetBytes("你是谁"), Remote); byte[] data = new byte[1024]; recv = server.ReceiveFrom(data, ref Remote); stringData = Encoding.Unicode.GetString(data); Debug.Log(stringData); } } // 发送消息 public void SendUdp() { server.SendTo(Encoding.Unicode.GetBytes("你是谁"), Remote); } //关闭Socket public void NetClosed() { // Debuger.LogError("NetClosed"); if (server != null) { server.Close(); } server = null; } void OnDestroy() { NetClosed(); }
相关推荐
UDP通讯veristand工程建立教程 UDP通讯veristand工程建立教程是关于如何使用UDP通讯协议在veristand工程中建立通讯模型的教程。本教程主要介绍了如何使用Simulink建立UDP Send模型和UDP Receive模型,并且如何在...
在工业自动化领域,尤其是在使用倍福(Beckhoff)设备时,UDP通讯常用于快速、实时的数据交换,尤其适用于那些对数据丢失不敏感的应用场景。 在倍福的控制系统中,如基于Windows操作系统的CX系列控制器或PC-based的...
本话题聚焦于使用FINS-UDP通讯协议进行LABVIEW(Laboratory Virtual Instrument Engineering Workbench)与OMRON PLC之间的通信测试。 首先,我们要理解FINS-UDP通讯的基本原理。FINS协议设计的目的是简化设备间的...
《X-Plane 11 UDP通讯说明文档》是针对飞行模拟软件X-Plane 11进行插件开发的重要参考资料,提供了详细的UDP通讯协议规范。UDP(User Datagram Protocol)是一种无连接的传输层协议,常用于实时应用,如游戏和视频流...
在这个基于LabVIEW编写的UDP通讯实例中,包含了两个关键的VI(Virtual Instruments):UDP发送.vi和UDP接收.vi。这两个VI分别对应了UDP协议中的发送和接收功能。 1. UDP发送.vi:这个VI主要用于构造和发送UDP数据包...
在本案例中,"Labview局域网UDP通讯-发送接收数组字符串.zip"是一个包含Labview子程序的压缩包,专门用于实现局域网内的UDP通信。UDP(User Datagram Protocol)是传输层的一种无连接协议,常用于实时数据传输,因为...
标题中的"C# winform UDP通讯"指的是使用C#编程语言,在Visual Studio 2012环境下开发Windows桌面应用(WinForm)时,实现基于UDP协议的网络通信功能。UDP是一种无连接、不可靠的传输协议,它以小的数据包(称为数据...
在两台电脑之间进行UDP通讯时,我们通常会利用编程接口,如Windows Socket(简称Winsock),来实现数据的发送和接收。本实例主要探讨如何使用Winsock控件在两台电脑上实现UDP通信。 首先,我们需要了解Winsock的...
标题中的“基于OPC客户端和UDP通讯协议的无连接数据转发软件”指的是一个利用VB(Visual Basic)编程语言开发的应用程序,该程序设计用于在OPC(OLE for Process Control)客户端与UDP(User Datagram Protocol)...
UDP通讯调试助手是一款基于C#语言并利用Visual Studio(VS)开发环境编写的工具,主要目的是帮助初学者理解和调试UDP(User Datagram Protocol)网络通信。UDP是一种无连接、不可靠的传输层协议,广泛用于实时数据...
C++ UDP通讯类的实现通常是围绕`socket` API进行的,这个API在不同操作系统上具有一定的共通性,但也存在一些差异,如套接字创建、绑定、发送和接收函数的使用。 在Windows平台上,通常使用`Winsock2`库来实现网络...
本项目“基于C#的简单UDP通讯程序”旨在介绍如何使用C#实现基于UDP协议的简单通信。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于实时数据传输,如在线视频、语音聊天等。 首先,我们要...
STM32+w5500 UDP通讯是一种在嵌入式系统中实现网络通信的方法,它结合了STM32微控制器和W5500网络接口芯片。STM32F103是意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M3内核的微控制器,具有丰富的...
在这个“TCP UDP 通讯VB源码”中,我们可以深入理解如何在VB环境下实现这两种协议的通信。 TCP是一种面向连接的、可靠的协议,它确保数据包按顺序无损地传输。在VB中实现TCP通信,首先需要导入`System.Net.Sockets`...
在标题和描述中提到的“Socket的TCP、UDP通讯”涵盖了两种主要的传输层协议:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。 **TCP(传输控制协议)**是一种面向连接的、可靠的、基于字节...
首先,我们来看一下标题提及的"C# UDP通讯例子"。在C#中,我们可以使用System.Net.Sockets命名空间中的UdpClient类来实现UDP通信。UdpClient提供了发送和接收UDP数据报的功能,它的工作方式是基于数据报的,每个数据...
【C#版UDP通讯】是基于Visual Studio 2010开发环境的一种网络通信技术,主要利用了UDP(User Datagram Protocol)协议。UDP是一种无连接的、不可靠的传输层协议,它在互联网协议栈中提供了快速的数据传输服务。与TCP...
《欧姆龙通讯.zip——FINS UDP协议与PLC链接详解》 在工业自动化领域,欧姆龙(Omron)PLC(可编程逻辑控制器)因其稳定性和灵活性被广泛使用。其中,FINS(Factory Integrated Network System)协议是欧姆龙网络...
资源名:ibaPDA-Interface-S7-TCP_UDP通讯配置实例源码 资源类型:程序源代码 源码说明: ibaPDA-Interface-S7-TCP_UDP通讯配置实例西门子plc配置实例 ibaPDA-Interface-S7-TCP_UDP通讯配置实例,西门子plc配置...
总结来说,"UDP通讯 c#与labview源码"涉及的知识点主要包括: 1. UDP协议的基础原理和特性。 2. C#中利用UdpClient类进行UDP通信的方法。 3. LabVIEW中通过“网络通信”函数库实现UDP通信的步骤。 4. C#与LabVIEW...