2011-02-25 69 views
0

说我有一个TcpClient,我接受来自TcpServer在C#中,出于某种原因它保持默认阻止。有没有其他的力量可以改变套接字阻塞的设置?就像说它受远程连接的影响?c#套接字阻止

我知道我设置了阻塞来恢复一些构建,但我改变了它,甚至引入了TcpClient而不是直接套接字。我没有特别改变阻塞为真,我只是评论阻塞=错误。这种情况可能与端点一直存在吗?

我不知道,但似乎有一天,我的套接字在没有任何真正的代码变化的情况下变得不稳固。

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

回答

0

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

+0

嘿,我问了一个主持人,他们让我投我自己的帐篷。所以不要低估我。 – 2011-12-27 01:26:39

2

喜欢说的是它受远程 连接呢?

没有。

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

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

MSDN

+0

这太好了,但我当时说的是,当AcceptTcpClient它给了我一个TcpClient与堵塞socked。这是关心的问题。 – 2011-02-25 23:51:49

+0

@ kelton25,你怎么知道封锁是关闭的? – young 2011-02-26 00:21:41

+0

断点,检查TcpClient.Client.Blocking – 2011-02-26 00:45:56