Unity与C++之间进行socket通信

Unity与C++之间进行socket通信

ID:37713633

大小:42.15 KB

页数:9页

时间:2019-05-29

Unity与C++之间进行socket通信_第1页
Unity与C++之间进行socket通信_第2页
Unity与C++之间进行socket通信_第3页
Unity与C++之间进行socket通信_第4页
Unity与C++之间进行socket通信_第5页
资源描述:

《Unity与C++之间进行socket通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Unity与C++之间进行socket通信在本例中我们将以C#作为Unity脚本为例与C++进行通信,所以实质上是C#与C++之间进行socket通信。C#与C++都提供了socket类,这样就使得这两种语言之间可以相互发送并接受消息。从而能够实现Unity与C++之间进行通信,也就使得在C++程序中对Unity程序进行控制成为可能。在本例中我们通过在C++程序中控制实现Unity中Cube对象的旋转以及移动操作来说明Unity与C++之间进行socket通信。首先,我们以Unity程序作为客户端程序,它主要是接收C++客服端发送过来的控制信息,对接收到的消息进行处理然后

2、反应到相应对象实体上(如Cube对象)。其次是客服端,客户端用VC++6.0来设计界面,主要用来向Unity服务器端发送控制信息进而控制下Unity中Cube对象的旋转和移动。具体的实现如下:服务器端:首先编写一个脚本类专门处理socket通信,在这里命名为ServerSocket,其主要实现了以下操作--------建立服务器端socket、启动线程等待客服端连接、接收消息、向客户端发送消息、断开连接。然后编写另外一个脚本用于对接收到的消息进行相应处理,本例中命名为Test。脚本具体实现如下:ServerSocket.cs具体实现代码:usingSystem.Colle

3、ctions;usingSystem;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading;usingSystem.IO;publicclassServerSocket{SocketseverSocket;//服务器端SocketSocketclientSocket;//客户端Threadthread1;//连接线程IPEndPointclientip;//被连接的ip地址stringreturnStr;//用于传递消息的字符串stringreceiveStr;//接收

4、客户端发来的字符串stringsendStr;//发送的字符串intrecv;//用于表示客户端发送的信息长度byte[]receiveData=newbyte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组byte[]sendData=newbyte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组//程序初始化publicvoidInit(){//初始化命令字符串returnStr=null;receiveStr=null;//获取ipstringhostName=System.Net.Dns.

5、GetHostName();System.Net.IPHostEntryipEntry=System.Net.Dns.GetHostEntry(hostName);//ip地址列表System.Net.IPAddress[]addr=ipEntry.AddressList;//建立服务器端socketIPEndPointipep=newIPEndPoint(addr[0],8000);//本机预使用的IP和端口severSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tc

6、p);severSocket.Bind(ipep);//绑定severSocket.Listen(10);//监听//建立服务器端socketend//新建线程thread=newThread(newThreadStart(GoClient));//启动线程thread.Start();}voidGoClient(){//客户端连接ConnetClient();//用死循环来不断的从客户端获取信息while(true){//每次接收数据之前先清空字符数组receiveData=newbyte[1024];recv=clientSocket.Receive(receiveD

7、ata);//当信息长度为0,说明客户端连接断开if(recv==0){//等待客户端重新连接ConnetClient();//进入下一次循环continue;}//接收到的消息receiveStr=Encoding.ASCII.GetString(receiveData,0,recv);}}//等待客户端连接voidConnetClient(){if(clientSocket!=null){clientSocket.Close();}//等待连接//当有可用的客户端连接尝试时执行,并返回一个新的socket,用于与客户端之间

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。