繁体   English   中英

c#套接字阻塞

[英]c# sockets blocking

假设我有一个TcpClient,我接受来自c#中的TcpServer,并且出于某种原因,它会因阻塞而保持默认。 是否有其他力量可以改变套接字阻塞的设置方式? 比如说它是否受到远程连接的影响?

我知道我设置了阻止来修改一些版本,但我更改了它,甚至引入了TcpClient而不是直接套接字。 我没有专门将阻塞改回true,我只是评论了blocking = false out。 这可能与端点持续存在吗?

我不知道,虽然它似乎只是因为我有一天编程,我的套接字变得unruley而没有任何真正的代码更改。

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);
    }
}

比如说它是否受到远程连接的影响?

不。

如果你显示一些在服务器端创建SocketTcpClient代码会更好。 我在C#中找不到TcpServer类。 你在谈论TcpListener吗? 如果您使用,请确保在使用AcceptSocket创建新套接字时set Socket's Blocking true 如果您调用AcceptTcpClient ,则不必担心阻塞或非阻塞模式,因为TcpClient始终是阻塞模式。

TcpClient类提供了在同步阻塞模式下通过网络连接,发送和接收流数据的简单方法。

来自MSDN

真的没有答案,我从来没有重复这个,几个月后,一个新的Windows安装,选择了代码,并没有问题了。 虽然非常奇怪,但却无法找到程序化推理。 就像我说的,几个月后它有点工作? 他们应该有一个'Unawnserable'选项:p。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM