示例#1
0
    public void Update()
    {
        if (m_ClientData == null || m_ClientData.ConnectData == null)
        {
            return;
        }

        TCPConnectData cd   = m_ClientData.ConnectData;
        uint           tick = GetTickCount();

        if (tick - cd.beginTime < cd.connectTimeout && cd.connected == false)
        {
            return;
        }
        if (cd.socket.Connected == false)
        {
            Debug.Log("TCP Connect Timeout.");
            m_ClientData.Status = TCPStatusType.ERR_TIMEOUT;  //连接超时
            CloseSocket(cd.socket);
        }
        else
        {
            Debug.Log("TCP Connected.");
            m_ClientData.Status      = TCPStatusType.OK_CONNECTED;//已连接
            cd.socket.Blocking       = false;
            m_ClientData.ConnectData = null;
            Thread th = new Thread(new ParameterizedThreadStart(_ThreadRecv));
            th.Start(m_ClientData);
            th = new Thread(new ParameterizedThreadStart(_ThreadSend));
            th.Start(m_ClientData);
        }
    }
示例#2
0
    public bool ConnectCoroutine(string ip, ushort port, uint connectTimeout, uint recvTimeout, int buffSize, uint maxCmdCount, uint hearbeatID)
    {
        if (IsActive)
        {
            return(false);
        }
        Shutdown();
        AddressFamily  newaf   = AddressFamily.InterNetwork;
        Socket         socket  = CreateSocket(newaf, buffSize);
        IPEndPoint     endpoit = new IPEndPoint(IPAddress.Parse(ip), port);
        TCPConnectData cd      = new TCPConnectData();

        cd.endPoint       = endpoit;
        cd.socket         = socket;
        cd.connected      = false;
        cd.connectTimeout = connectTimeout;
        cd.beginTime      = GetTickCount();
        Thread th = new Thread(new ParameterizedThreadStart(ThreadConnect));

        th.Start(cd);

        m_ClientData             = new TCPClientData(maxCmdCount);
        m_ClientData.Status      = TCPStatusType.OK_CONNECTING;    //正在连接
        m_ClientData.Socket      = socket;
        m_ClientData.BuffSize    = buffSize;
        m_ClientData.RecvTimeout = recvTimeout;
        m_ClientData.HearbeatID  = hearbeatID;
        m_ClientData.ConnectData = cd;

        return(true);
    }
示例#3
0
 void ThreadConnect(object obj)
 {
     try
     {
         TCPConnectData cd = (TCPConnectData)obj;
         cd.socket.Connect(cd.endPoint);
         cd.connected = cd.socket.Connected;
     }
     catch
     {
     }
 }
示例#4
0
    public bool Connect(string ip, ushort port, uint connectTimeout, uint recvTimeout, int buffSize, uint maxCmdCount, uint hearbeatID)
    {
        if (IsActive)
        {
            return(false);
        }
        Shutdown();
        AddressFamily  newaf   = AddressFamily.InterNetwork;
        Socket         socket  = CreateSocket(newaf, buffSize);
        IPEndPoint     endpoit = new IPEndPoint(IPAddress.Parse(ip), port);
        TCPConnectData cd      = new TCPConnectData();

        cd.endPoint       = endpoit;
        cd.socket         = socket;
        cd.connected      = false;
        cd.connectTimeout = connectTimeout;
        Thread th = new Thread(new ParameterizedThreadStart(ThreadConnect));

        th.Start(cd);
        uint tick = GetTickCount();

        while (GetTickCount() - tick < connectTimeout && cd.connected == false)
        {
            Thread.Sleep(50);
        }
        if (socket.Connected == false)
        {
            Debug.Log("Connect Timeout:" + (GetTickCount() - tick) + ", Set:" + connectTimeout);
            socket.Close();
            return(false);
        }
        m_ClientData             = new TCPClientData(maxCmdCount);
        m_ClientData.Status      = TCPStatusType.OK_CONNECTED;
        m_ClientData.Socket      = socket;
        m_ClientData.BuffSize    = buffSize;
        m_ClientData.RecvTimeout = recvTimeout;
        m_ClientData.HearbeatID  = hearbeatID;

        socket.Blocking = false;
        th = new Thread(new ParameterizedThreadStart(_ThreadRecv));
        th.Start(m_ClientData);
        th = new Thread(new ParameterizedThreadStart(_ThreadSend));
        th.Start(m_ClientData);
        Debug.Log("TCP Connected2.");
        return(true);
    }