gpt4 book ai didi

C#套接字问题

转载 作者:可可西里 更新时间:2023-11-01 02:45:56 25 4
gpt4 key购买 nike

我用电缆连接到 PC 以尝试模拟服务器\客户端。服务器开始在特定端点监听,有时稍后客户端会连接。一切顺利,我确定一个连接(端口)的最大速度约为 24 Mbps。
所以现在我颠倒了角色,无法获得连接 Socket.BeginConnect(ServerEndPoint, new AsyncCallback(OnConnectCallback), _ClientSocket) 超时并将 localEndpoint 设置为 0.0.0.0

客户端代码如下:

public void ConnectToServer(IPAddress iPAddress, int Port)
{
connected.Reset();
IPEndPoint ServerEndPoint = new IPEndPoint(iPAddress, Port);

try
{
_ClientSocket = new Socket(iPAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
_ClientSocket.BeginConnect(ServerEndPoint, new AsyncCallback(OnConnectCallback), _ClientSocket);

connected.WaitOne();

// Here I would like to start async receiving but there's no connection
}
catch (SocketException)
{
// TODO:
}
}

private void OnConnectCallback(IAsyncResult result)
{
try
{
Socket client_StateSocket = (Socket)result.AsyncState;

client_StateSocket.EndConnect(result);

/// Here I get 0.0.0.0
connected.Set();
}

catch (SocketException)
{
// TODO:
}
}

服务器基本来自 MSDN 示例。它开始监听传入连接,进入永久 while 循环并等待 Socket.BeginAccept 触发(但它永远不会触发)。
我怀疑有防火墙,但两台 PC 上的设置看起来都一样,并且以相反的方式工作正常,那么可能是什么问题?

最佳答案

当您开发服务器/客户端架构时,通常让两者在同一台机器上运行并让它们通过环回 IP 地址进行通信就足够了。作为一般规则,网络代码不关心另一端是在同一台计算机上、同一个交换机上还是在 Voyager 2 探测器上(好吧,他们确实有点关心,因为延迟非常高)。

如果您在部署/测试中遇到问题,那么 99% 的可能性您正在处理网络问题,而不是编程问题。有时会有一些必要的更改(例如公开设置代理设置的选项)。但调试将首先是网络操作。

我的第一个猜测是针对防火墙(包括内置于 Windows 中的防火墙)。然后是类似于防火墙的功能,例如 NAT 层。

关于C#套接字问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54808145/

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