草庐IT

Tcpclient

全部标签

c# - 作为 TcpClient 接收消息

我一直在按照本教程“http://tech.pro/tutorial/704/csharp-tutorial-simple-threaded-tcp-server”设置一个可以发送和接收消息并连接多个客户端的迷你服务器。一切正常,这很好..但不幸的是,本教程中缺少一件事是客户端如何设置监听器来监听服务器。我只有这么多:publicvoidSetupReceiver(){TcpClienttcpClient=newTcpClient(this.Host,this.Port);NetworkStreamnetworkStream=tcpClient.GetStream();//Whatne

C# 如果不再使用,是否需要使用 TCPClient.Close 关闭 TCPClient?

我正在制作一个向许多TCP监听器发送数据的程序。如果不再使用其中一个TCP发送channel,我们是否需要使用TCPClient.close将其关闭。如果我们让它打开会怎样?谢谢! 最佳答案 我不会显式地使用Close-我只是通过using语句处理它:using(TcpClientclient=...){//Usetheclient}Whathappensifweleaveitopen?如果双方都没有关闭连接,它将毫无意义地坐在那里什么都不做。如果另一端关闭连接,我怀疑您会在TIME_WAIT或类似的情况下有一段时间的本地连接;我不

c# - 无法建立连接,因为目标机器主动拒绝

我正在使用C#开发一个简单的helloworldTCP/IP客户端服务器应用程序,但无法让我的客户端连接。任何人都可以提供任何额外的故障排除步骤吗?我开始没有想法了...以下是代码的相关部分:服务器:Console.Out.WriteLine("Abouttobindaddress");IPAddressipAd=IPAddress.Parse("127.0.0.1");Console.Out.WriteLine("Chooseaporttobind...");Stringport=Console.In.ReadLine();intiPort=Int32.Parse(port);Tcp

c# - 无法让 TcpClient 连接到 gmail

我正在尝试做一些可以阅读电子邮件的东西,但我什么都做不了。这段代码:TcpClientc=newTcpClient();c.Connect("imap.gmail.com",993);NetworkStreamstream=c.GetStream();stream.ReadTimeout=1000;stream.ReadByte();接缝是我下载的任何代码中断的地方。最后一行抛出IOException消息:“无法从传输连接读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应。"我会选择一个第三方程序,它可以自动下载我可以阅读的格式的电子

c# - TCP 套接字/NetworkStream 意外失败

这个问题具体是关于通过TCP使用原始数据的NetworkStream的后台通信中发生了什么。TcpClient连接直接与网络上的硬件设备通信。每隔一段时间,NetworkStream就会出现打嗝,最好在Debug模式下观察时进行描述。我在流上设置了读取超时,当一切都按预期工作时,当跨过Stream.Read时,它将坐在那里等待传入数据的超时时间长度。如果不是,只有一小部分数据通过,TcpClient仍然显示为打开和连接,但Stream.Read不再等待传入数据的超时时间。它立即转到下一行,显然没有收到任何数据,并且在处理完所有内容并重新建立新连接之前,不会有任何数据通过。问题是,在这个

c# - TcpClient 性能 - 发送 4 个标量值比发送包含所有值的 1 个字节数组慢得多

我正在编写一个应用程序,其中两个应用程序(比如服务器和客户端)通过本地主机上基于TCP的连接进行通信。该代码对性能相当关键,因此我正在尝试尽可能优化。以下代码来自服务器应用程序。要发送消息,我天真的方法是从TcpClient的流创建一个BinaryWriter,并通过BinaryWriter写入消息的每个值。假设消息包含4个值;一个long,后跟一个bool值,然后是2个long;天真的方法是:TcpClientclient=...;varwriter=newBinaryWriter(client.GetStream());//Thefollowingtakesca.0.55ms:wr

c# - 异步 TCP 服务器持有套接字但停止监听

我有以下异步TCP服务器,我用它来接受来自要上传文件的客户端的传入请求。大约1-4小时后,服务器将停止接受任何新连接。这一直让我感到困惑,因为我无法确定地重现错误。我程序中的其余线程继续正常运行。没有任何异常抛出。关于可能发生的事情有什么建议吗?在服务器死机之前,我所看到的只是它设法完成挂起的请求然后停止。我有一种预感,服务器正在经历频繁的网络断开连接。如何使这段代码对故障更健壮?我已经将try-catch添加到可能会失败的两段代码中,但我觉得我仍然遗漏了一些东西。我设置了另一个线程来检查此服务器是否释放套接字,但即使在它停止处理客户端请求后套接字似乎仍在使用中。我使用netstat-

Python - 如何检查套接字是否仍然连接

我有以下代码,这是不言自明的:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(host,port)s.send("somedata")#don'tclosesocketjustyet...#dosomeotherstuffwiththedata(normalstringoperations)ifs.stillconnected()istrue:s.send("somemoredata")ifs.stillconnected()isfalse:#recreatethesocketandreconnects=socke

C# 客户端/服务器问题

我对这里发生的事情感到非常困惑。我一直在设置断点,但我似乎无法理解。基本上,我有一个客户端和一个服务器。我希望客户端发送两个单独的数据字符串。通过设置断点,我注意到我的客户实际上确实用适当的数据填充了两个字符串。但是,服务器永远不会看到第二个字符串。为什么会发生这种情况,我该如何解决?任何帮助都将不胜感激!下面是我的代码:服务器:privatestaticvoidHandleClientComm(objectclient){/**creatingalistwhichcontainsDatabaseFileobjects**/ListtheDatabase=newList();TcpCl

tcp - TCP通信是2路通信吗?

这确实是一个关于TCP通信的新手问题。TCP通信是双向通信吗?让我举一个场景:一个程序正在监听一个TCP端口,比如端口25。一个外部程序使用随机输出端口连接到第一个程序的IP地址(端口25),比如端口45000既然第一个程序只是监听,那是不是意味着第一个程序只能通过端口25接收数据,不能发回任何数据?如果它可以发送数据,是什么保护第二台计算机的输出端口45000免受第一个程序通过端口25的恶意攻击?据我所知,防火墙仅适用于传入端口。非常感谢任何回复 最佳答案 TCP总是双向的。没有像UDP那样的“发送后忘记”。第一个程序必须打开一个