c#套接字阻塞

时间:2011-02-25 22:57:03

标签: 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);
    }
}

2 个答案:

答案 0 :(得分:2)

  

喜欢说它受遥控器的影响   连接?

不。

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

  

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

来自MSDN

答案 1 :(得分:0)

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