我正在编写3D代码,现在,我不打算创建一个适用于网络的游戏 . 我使用System.Net和System.Net.Sockets .
我的服务器是愚蠢的,它只能保持一个连接(稍后,我会将其更改为多连接功能) . 它有一个TcpListener,它在端口10000上侦听127.0.0.1 . (只是为了测试) . 在那里,我有一个DO While循环,它检查接收的数据并显示它 .
我的客户端是TcpClient . 它连接到服务器并发送消息 . 这里没什么特别的,它是用TcpClient.GetStream()完成的.Write() . 这很好用 . 我也可以在发送后立即阅读一个答案 .
但是,如果服务器在没有客户端询问的情况下发送一些信息怎么办?例如:服务器上的所有玩家都会收到一个项目 . 我如何设置我的客户端,以便能够接收此类消息?
我的客户是否必须循环询问?或者我必须以某种方式成为代表?我可以创建一个循环,每200毫秒或其他东西要求这样的信息,但这将如何改变3D游戏的性能?
在专业游戏开发中如何做到这一点?
2 回答
使用异步客户端套接字:
http://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx
在此ReceiveCallback中,您可以创建一个处理服务器消息的开关 .
例如:消息的第一个字节是命令,命令后是正确的数据 . 在交换机中,您可以处理该命令并执行一些代码 .
使用TcpClient和TcpListener类的异步功能 .
在您的客户: