Exemplo n.º 1
0
    void ThreadFunc()
    {
        Debug.Log("socket thread start");

        do
        {
            // connect
            try
            {
                socket.Connect(m_host, m_port);
            }
            catch
            {
                Debug.Log("socket connect failed");
                break;
            }

            // receive packet
            while (true)
            {
                if (mainThreadCloseSocket)
                {
                    break;
                }

                bool ret = socket.Poll(10, SelectMode.SelectRead);
                if (ret)
                {
                    if (socket.Available == 0)
                    {
                        Debug.Log("server disconnect the socket");
                        break;
                    }
                    else
                    {
                        byte[] receive = new byte[socket.Available];
                        int    len     = socket.Receive(receive);

                        receiveBuffer.Write(receive, len);

                        receiveBuffer.HandleReceive();
                    }
                }

                // send packet
                if (sendBuffer.offset > 0)
                {
                    //Debug.LogError("发送网络包到缓冲区");

                    byte[] buffer = new byte[sendBuffer.offset];

                    sendBuffer.Read(ref buffer, (int)sendBuffer.offset);

                    socket.Send(buffer);
                }
            }
        }while(false);

        Debug.Log("socket thread end");
    }