gpt4 book ai didi

c# - TcpClient 未连接

转载 作者:太空宇宙 更新时间:2023-11-03 22:21:02 28 4
gpt4 key购买 nike

我正在用 C# 开发一个 Tcp 客户端,我正在使用 TcpClient 类。我无法连接到服务器。

调试应用程序我可以看到对 Connect 的调用是成功的,但是在我这样做之后,我用 netstat 检查服务器和客户端上的连接状态.结果是服务器连接是 ESTABLISHED,但在客户端上,我在 netstat 结果中看不到与服务器的任何连接。

读取 TcpClient 实例我可以看到属性 Connected 是真的所以它应该没问题但是当我尝试从 NetworkStream 它挂起。

当我说它挂起时,我的意思是服务器正在发送数据,但 readline 根本没有获取任何数据。

您知道可能出现的问题和一些解决方法吗?

谢谢

最佳答案

首先,一个建议:根据我的经验,TcpClient 最好异步使用。

尽管在我对 TcpClient 的所有使用中,如果不首先对请求执行写入操作,我就无法读取响应。您将永远阻止尝试同步等待对您尚未发送的请求的响应。

在此基础上扩展,发送请求将像这样完成:

TcpClient.GetStream().BeginWrite( tcpMessage, ... );

它将发送 tcpMessage 中的请求,它将是一个字节流,由这样的字符串生成:

byte[] tcpMessage = httpEncoding.GetBytes( httpMessage );

你的请求信息是这样的:

httpMessage = "GET / HTTP/1.1\r\n" + ...;

这会发送您的请求,这会导致服务器生成一个响应,然后您可以像这样收集该响应:

TcpClient.GetStream().BeginRead( ... );

你终于可以收到一些东西了!即使只是一句“我不喜欢你的要求!”回复。 8D

关于c# - TcpClient 未连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3110255/

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