Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#插座阻塞_C#_Sockets_Blocking - Fatal编程技术网

c#插座阻塞

c#插座阻塞,c#,sockets,blocking,C#,Sockets,Blocking,假设我有一个从c#中的TcpServer接受的TcpClient,由于某种原因,它一直默认为blocking off。是否有其他力可以改变套接字阻塞的设置方式?比如说,它是否受到远程连接的影响 我知道我设置了阻塞来修复一些构建,但是我改变了它,甚至引入了TcpClient而不是直接的套接字。我没有具体地将阻塞改回true,我只是注释了blocking=false。这是否是端点可能存在的问题 我不知道,只是有一天我在编程的时候,我的套接字变得不规则,代码没有任何真正的变化 public void

假设我有一个从c#中的TcpServer接受的TcpClient,由于某种原因,它一直默认为blocking off。是否有其他力可以改变套接字阻塞的设置方式?比如说,它是否受到远程连接的影响

我知道我设置了阻塞来修复一些构建,但是我改变了它,甚至引入了TcpClient而不是直接的套接字。我没有具体地将阻塞改回true,我只是注释了blocking=false。这是否是端点可能存在的问题

我不知道,只是有一天我在编程的时候,我的套接字变得不规则,代码没有任何真正的变化

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错误。这就是为什么我一开始就去寻找。嘿,我问了一位主持人,他们让我自己投票。所以不要投我的反对票。