c#插座阻塞
假设我有一个从c#中的TcpServer接受的TcpClient,由于某种原因,它一直默认为blocking off。是否有其他力可以改变套接字阻塞的设置方式?比如说,它是否受到远程连接的影响 我知道我设置了阻塞来修复一些构建,但是我改变了它,甚至引入了TcpClient而不是直接的套接字。我没有具体地将阻塞改回true,我只是注释了blocking=false。这是否是端点可能存在的问题 我不知道,只是有一天我在编程的时候,我的套接字变得不规则,代码没有任何真正的变化c#插座阻塞,c#,sockets,blocking,C#,Sockets,Blocking,假设我有一个从c#中的TcpServer接受的TcpClient,由于某种原因,它一直默认为blocking off。是否有其他力可以改变套接字阻塞的设置方式?比如说,它是否受到远程连接的影响 我知道我设置了阻塞来修复一些构建,但是我改变了它,甚至引入了TcpClient而不是直接的套接字。我没有具体地将阻塞改回true,我只是注释了blocking=false。这是否是端点可能存在的问题 我不知道,只是有一天我在编程的时候,我的套接字变得不规则,代码没有任何真正的变化 public void
public void GetAcceptedSocket(TcpClient s)
{
try
{
sock = s;
IPEndPoint remoteIpEndPoint = s.Client.RemoteEndPoint as IPEndPoint;
strHost = remoteIpEndPoint.Address.ToString();
intPort = remoteIpEndPoint.Port;
ipEnd = remoteIpEndPoint;
sock.ReceiveTimeout = 10000;
boolConnected = true;
intLastPing = 0;
LastPingSent = DateTime.Now;
LastPingRecieved = DateTime.Now;
handleConnect(strHost, intPort);
oThread = new Thread(new ThreadStart(this.run));
oThread.Start();
}
catch (Exception e)
{
handleError(e, "Connect method: " + e.Message);
}
}
比如说它受遥控器的影响吗
有联系吗
没有
如果在服务器端显示一些创建Socket
或TcpClient
的代码,效果会更好。我在C#中找不到TcpServer
类。你说的是TcpListener
?
如果是,请确保在使用AcceptSocket
创建新套接字时将套接字的阻塞设置为true
。如果调用AcceptTcpClient
,则不必担心阻塞或非阻塞模式,因为TcpClient
总是阻塞模式
TcpClient类提供了简单的
连接、发送和删除的方法
通过网络接收流数据
在同步阻塞模式下
从。真的没有答案,我从来没有复制过这个,几个月后,重新安装windows后,重新获得了代码,不再有问题。虽然很奇怪,但迪昂利无法找到它发生的程序性理由。就像我说的,几个月后就有点效果了?
他们真的应该有一个“不可下载”的选项:p.那太好了,但我想说的是,当AcceptCpclient时,它给了我一个带有socket和blocking off的Tpclient。这就是问题所在。@kelton25,你怎么知道阻塞已关闭?断点,检查TcpClient.Client.blocking的状态,我知道,似乎没有任何意义。我甚至在我的整个解决方案中搜索了blocking这个词,以防我在其他地方将其关闭……我将发布一段代码。使用断点和查看阻塞状态不仅会显示false,还表现为阻塞已关闭。如果读取没有数据,它会立即通过,我会得到wouldblock错误。这就是为什么我一开始就去寻找。嘿,我问了一位主持人,他们让我自己投票。所以不要投我的反对票。