Exemple #1
0
    public void disconnect()
    {
        Debug.Log("please disconnect!!!!!!!!!!!!!!!!!!!!!!!!!!@@@@@@");

        //if(socketReceiveThread!=null&&socketReceiveThread.ThreadState!=ThreadState.Suspended&&socketReceiveThread.ThreadState!=ThreadState.SuspendRequested)socketReceiveThread.Suspend();
        if (connected)
        {
            connected = false;
            state     = BGSocketState.disconnected;
            try
            {
                if (socketReceiveThread != null)
                {
                    if (socketReceiveThread.ThreadState != System.Threading.ThreadState.Aborted)
                    {
                        socketAbort = true;
                        socketReceiveThread.Abort();
                        socketReceiveThread.Join();
                    }
                    //socketReceiveThread = null;
                }

                Closed();
            }
            catch (Exception e)
            {
                Debug.LogWarning("Close error:::" + e);
            }
        }
    }
Exemple #2
0
    public void onUpdate(float delta)
    {
        ReceiveAllTime();
        switch (state)
        {
        case BGSocketState.disconnected:

            if (connected)
            {
                FrameDelayCall.remove(checkcall);

                if (socket != null)
                {
                    socket.Disconnect(true);
                }
                //socket=null;
                //socketReceiveHandler=null;
                //socketReceiveThread=null;
                bgISocket.scoketDiconnected();
            }
            connected = false;


            break;
        }
        state = BGSocketState.idle;
    }
Exemple #3
0
    /*
     * private void ReceiveAllTime()
     * {
     *      Debug.Log("ReceiveAllTime");
     * if (Connected && connected)
     * {
     *  try
     *  {
     *      int dataLength = 0;
     *      dataLength = socket.Available;
     *
     *      if (dataLength != 0)
     *      {
     *          var dataBuffer = new byte[dataLength];
     *          socket.Receive(dataBuffer);
     *          bgISocket.receiveData(dataBuffer);
     *      }
     *  }
     *  catch (Exception e)
     *  {
     *      Debug.LogWarning(e.ToString());
     *      Debug.LogWarning("ReceiveAllTime Disconnect");
     *      if (connected) disconnect();
     *  }
     * }
     * }
     */
    public void onUpdate(float delta)
    {
        //if (socketReceiveThread == null) ReceiveAllTime();
        if (state > BGSocketState.idle)
        {
            switch (state)
            {
            case BGSocketState.connected:
                connected = true;
                bgISocket.socketConnected();
                break;

            case BGSocketState.disconnected:
                Debug.Log("#@@$$BGSocketState.disconnected");
                bgISocket.scoketDiconnected();

                break;

            case BGSocketState.received:
                break;
            }
            state = BGSocketState.idle;
            if (connected && connected != Connected)
            {
                Debug.LogWarning("Where socket disconned not send by function???");
                if (bgISocket != null)
                {
                    bgISocket.scoketDiconnected();
                }
            }
        }
    }
Exemple #4
0
    private void connectCallback(IAsyncResult asyncConnect)
    {
        Debug.Log("connectResultBack");
        try{
            int code = socket.EndConnect(asyncConnect);
            if (code == 0)
            {
                Debug.Log("connectSuccess!!!!!!");
                connected   = true;
                state       = BGSocketState.connected;
                socketAbort = false;
//				asyncReceive();
//				FrameDelayCall.Add(()=>{
                socketReceiveThread = new Thread(ReceiveSocket);
                socketReceiveThread.IsBackground = true;
                socketReceiveThread.Start();
//				},1);
            }
            else
            {
                state = BGSocketState.connectFail;
                disconnect();
                connected = false;
            }
        }catch (Exception e) {
            Debug.LogException(e);
            Debug.Log("connect Time Out");
            state = BGSocketState.connectFail;
            disconnect();
        }
    }
Exemple #5
0
 public void disconnect()
 {
     if (socket != null)
     {
         socket.Disconnect(true);
     }
     state = BGSocketState.disconnected;
 }
Exemple #6
0
 /// <summary>
 ///     连接远程服务器
 ///     <para>
 ///         connect the remote serverr
 ///     </para>
 /// </summary>
 /// <param name="ip">
 ///     服务器IP
 ///     IP address of the server
 /// </param>
 /// <param name="port">
 ///     端口号
 ///     port
 /// </param>
 public void connect(string ipAddress, int port)
 {
     zerotimes = 0;
     state     = BGSocketState.connecting;
     IAsyncResult result = socket.BeginConnect(ipAddress, port,
                                               (int)(BGTools.Is3G?MnaConst.ENUM_MNA_NETTYPE.E_MNA_NETTYPE_3G:MnaConst.ENUM_MNA_NETTYPE.E_MNA_NETTYPE_WIFI),
                                               (int)(MnaConst.ENUM_MNA_MOBILE_ISP.E_MNA_MOBILE_UNKNOWN), 5000, new AsyncCallback(connectCallback), null);
     //这里做一个超时的监测,当连接超过5秒还没成功表示超时
 }
Exemple #7
0
    /// <summary>
    ///     连接远程服务器
    ///     <para>
    ///         connect the remote serverr
    ///     </para>
    /// </summary>
    /// <param name="ip">
    ///     服务器IP
    ///     IP address of the server
    /// </param>
    /// <param name="port">
    ///     端口号
    ///     port
    /// </param>
    public void connect(string ipAddress, int port)
    {
        zerotimes = 0;


        MonoBehaviour.print(ipAddress.ToString());

        state = BGSocketState.connecting;
        socket.BeginConnect(ipAddress, port, new AsyncCallback(connectCallback), socket);
    }
Exemple #8
0
    private void ReceiveSocket()
    {
        Thread.Sleep(100);
        //在这个线程中接受服务器返回的数据
        while (true)
        {
            //			Thread.Sleep(100);
            if (socketAbort)
            {
                break;
            }
            if (!connected)
            {
                //与服务器断开连接跳出循环
                Debug.Log("Failed to clientSocket server.");
                //socket.Close();
                //disconnect();
                state = BGSocketState.disconnected;

                break;
            }
            try
            {
                //接受数据保存至bytes当中
                var tbytes = new byte[16384];
                //Receive方法中会一直等待服务端回发消息
                //如果没有回发会一直在这里等着。
                int i = socket.Receive(tbytes, 16384);
                //Debug.Log(i);
                if (i <= 0)
                {
                    Debug.Log("Thread receive i invalid.");
                    disconnect();
                    //socket.Close();
                    break;
                }

                var dataBuffer = new byte[i];

                Array.Copy(tbytes, 0, dataBuffer, 0, i);


                bgISocket.receiveData(dataBuffer);

                //GC.Collect();
            }
            catch (Exception e)
            {
                Debug.LogWarning("Failed to clientSocket error." + e);

                disconnect();
                break;
            }
        }
    }
Exemple #9
0
    private void connectCallback(IAsyncResult asyncConnect)
    {
        Debug.Log("connectSuccess");
        try{
            socket.EndConnect(asyncConnect);
            Debug.Log("connectSuccess!!!!!!");
            connected   = true;
            state       = BGSocketState.connected;
            socketAbort = false;
//            socketReceiveThread = new Thread(ReceiveSocket);
//            socketReceiveThread.IsBackground = true;
//            socketReceiveThread.Start();
            asyncReceive();
        }catch (Exception e) {
            Debug.Log("connect Time Out");
            state = BGSocketState.connectFail;
            //state = BGSocketState.disconnected;
        }finally{
        }
    }