为什么Stream.send()会在超时后发送消息?

时间:2017-07-06 08:22:51

标签: c# sockets tcp ip wifi

我有一个程序,它打开一个tcp连接,发送消息并在几秒钟后使用Visual Studio Express 2013上的C#中的ManagedWifi API接收消息。在我的上一台计算机(RIP)上,代码工作正常。

private void sendTCPstr(string message_str, string ip_addr, int port)
{
IPAddress basewifi_addr_ip = IPAddress.Parse(ip_addr);
TcpClient tcp = new TcpClient();
tcp.SendTimeout = 5000;
tcp.ReceiveTimeout = 5000;
stream = tcp.GetStream();
stream.Write(message_byte, 0, message_byte.Length);
byte[] buffer = new byte[256];
int i = 0;
i = stream.Read(buffer, 0, 256);
tcp.Close();
}

似乎在这里,我的消息是在超时后发送的(5秒后),发送消息然后等待5秒,如果有任何ACK,用wireshark和logfiles验证。我在这段代码中没有改变任何东西,只是计算机。这些功能在我的上一台计算机上运行良好,甚至超时。我正确地改变了程序集的路径。其余的代码完美无缺。

我的前电脑:
笔记本电脑ACER 64位
Wifi集成
Windows 10

我的实际电脑:
Sud-tech塔(法国)64位
带D-Link适配器的Wifi
Windows 10

你遇到过这个问题吗?我怎么解决呢? 我不知道该怎么做,我需要在我的程序中使用这些功能。

编辑:它表示连接无法建立或主机无法及时响应,但我在wireshark上看到连接已建立且主机无法在5秒内响应,因为我的计算机在5秒后发送消息。

EDIT2: 似乎是stream.Read()导致了这个问题。当我只在流上写时,该程序有效。但是现在,我再也无法读取流了,而在我的旧计算机上它完美地运行了...并且错误一直说有超时错误。

0 个答案:

没有答案