簡體   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