gpt4 book ai didi

C#客户端服务器TCP客户端监听

转载 作者:可可西里 更新时间:2023-11-01 02:54:39 36 4
gpt4 key购买 nike

我从事 3D 编码工作有一段时间了,现在,我不想创建与网络配合使用的游戏。我使用 System.Net 和 System.Net.Sockets。

我的服务器傻得要命,它只能保持一个连接(稍后,我会把它改成多连接能力)。它有一个 TcpListener,它在 127.0.0.1 端口 10000 上监听。(只是为了测试)。在那里,我有一个 DO While 循环,它检查接收到的数据并显示它。

我的客户端是一个 TcpClient。它连接到服务器并发送消息。这里没有什么特别的,它是通过 TcpClient.GetStream().Write() 完成的。这很好用。我也可以在发送后立即阅读一个答案。

但是,如果服务器在没有客户端请求的情况下发送一些信息怎么办?例如:服务器上的所有玩家都会收到一个项目。我必须如何设置我的客户端才能接收此类消息?

我的客户是否必须循环询问?还是我必须以某种方式任命代表?我可以创建一个循环,每隔 200 毫秒左右询问一次此类信息,但这将如何改变 3D 游戏的性能?

这在专业游戏开发中是如何完成的?

最佳答案

使用 TcpClient 和 TcpListener 类的异步功能。
在您的客户中:

private TcpClient server = new TcpClient();

async Task Listen()
{
try {
IPAddress IP = IPAddress.Loopback // this is your localhost IP
await server.ConnectAsync(IP,10000); // IP, port number

if(server.Connected) {
NetworkStream stream = server.GetStream();

while (server.Connected) {
byte[ ] buffer = new byte[server.ReceiveBufferSize];
int read = await stream.ReadAsync(buffer, 0, buffer.Length);
if (read > 0 ){
// you have received a message, do something with it
}
}
}
}
catch (Exception ex) {
// display the error message or whatever
server.Close();
}
}

关于C#客户端服务器TCP客户端监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20700459/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com