开发者

c# sockets blocking

开发者 https://www.devze.com 2023-02-13 17:53 出处:网络
Say I have a TcpClient that I accept from a TcpServer in c#, and for some reason it keeps defaulting with blocking off. Is there some other force that can change how the socket blocking is set? Like s

Say I have a TcpClient that I accept from a TcpServer in c#, and for some reason it keeps defaulting with blocking off. Is there some other force that can change how the socket blocking is set? Like say is it affected by the remote connection at all?

I know I set blocking to fale a few builds back, but I changed it, and even introduced the TcpClient instead of a straight socket. I haven't specifically changed the blocking back to true, I just commented blocking = false out. Is that something that persists maybe with the endpoint?

I don't know though it just seemed that as I was programming one day my sockets just became unruley without any real change in their code.

public void GetAcce开发者_运维问答ptedSocket(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);
    }
}


Like say is it affected by the remote connection at all?

Nope.

It would have been better if you show some code where you create Socket or TcpClient in server side. I cannot find TcpServer class in C#. Are you talking about TcpListener? If you are, please make it sure that you set Socket's Blocking true if you use AcceptSocket to create a new socket. If you call AcceptTcpClient, you should not worry about blocking or non-blocking mode as TcpClient is always blocking mode.

The TcpClient class provides simple methods for connecting, sending, and receiving stream data over a network in synchronous blocking mode.

from MSDN.


There really is no answer, I've never duplicated this, and after a few months, and a fresh windows install, picked the code up, and didn't have the problem anymore. Very weird though, defiantly couldn't find a programmatic reasoning for it happening. Like I said, after a few months it just kinda worked? They should really have an 'Unawnserable' option :p.

0

精彩评论

暂无评论...
验证码 换一张
取 消