TCP和UDP 的C#实现,两份我认为非常实用的代码,拖进去U3D就可以实现传输任意结构体数据。
近期更新……可能有一些bug,各位遇到了可以反馈一下~
在课题组onenote里。
TCP设置需要设置服务器的IP和PORT。
UDP分别设置服务器和客户端的IP和PORT
由于UDP是面向无连接的通信,所以实际上服务端和客户端是对等的,只不过服务端绑定了一个监听端口,而客户端每次都是自动分配的连接端口,其实也可以做成两边都绑定端口或者都不绑定端口的P2P模式。
PS:这个我还没有实验过,上述例子是都绑定一个ip和端口的,所以服务端和客户端都要绑定端口。
来自 https://blog.csdn.net/u012234115/article/details/46483885
UDP 和 TCP 初始化了控制字 和 开了线程, 程序关闭时候一定要给它擦屁股。。。
不然会出现各种奇怪的bug,UNITY3D 卡住,没办法play, 再次打开显示端口占用等等。。。
TCP的服务端在服务端关闭socket时还要把客户端的连接给关闭了:
如果没有进行一次数据收发,关闭线程和套接字会出现错误:
由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
服务端做了shutdown,both的处理。然而客户端也有一个shutdown.send处理,所以冲突了,只能有一个shutdown处理。客户端可以采用close什么的
来自 https://blog.csdn.net/nndtdx/article/details/6317020
这里的处理方法是在服务器关闭的时候,给客户端广播一个“服务器要关掉啦,你们赶快跑路吧~“ 然后就不会出现错误了,获取可以考虑添加一个收发数据Ip的list,List不为空才shutdown,否则直接close,比较复杂就没做了。
win10 里使用 socket需要用 Windows.Networking下的类库实现,我们如果直接在Unity C# 脚本里 using Windows.Networking是不可以的,Unity编辑器在编译的时候是不能通过的。Windows.Networking 这是属于 WinRT API,只有在VS里才能被编译。
所以,如果要在Unity开发HoloLens程序使用 WinRT API 需要用 #if WINDOWS_UWP …… #endif 对相应的代码进行包裹,这样在Unity里就不会报错,build后再VS里再编译打包
可以尝试类似如下代码实现socket
来自 http://mshololens.cn/d/124/2