Ejemplo n.º 1
0
    // Start is called before the first frame update
    public void Start()
    {
        mReturnBuffer = new byte[1024];
        mSendBuffer   = new byte[1024];
        mStringBuffer = new char[1024];

        //ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
        //mSourceIPAddress = ipHostInfo.AddressList[0];
        mSourceIPAddress = IPAddress.Parse(mSourceIP);//IPAddress.Any;//
        mRemoteEndPoint  = new IPEndPoint(mSourceIPAddress, mPort);

        mSendByteCounter = sizeof(short);//Have to reserve two bytes at the beginning of mSendBuffer for the controls count.

        Debug.Log("Starting dataSource! sourceIPAddress " + mSourceIPAddress.ToString() + " remoteEndPoint " + mRemoteEndPoint.ToString());
        //mWorkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //Note: ListenSocket unnecessary if !mServer and !mAlternating
        //mListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        if (mServer)
        {
            mListening   = true;
            mServerStage = serverConnectStage.NoServerSocket;
        }
        else
        {
            mListening   = false;
            mClientStage = clientConnectStage.NoClientSocket;
        }
    }
Ejemplo n.º 2
0
    public void sendPacket()
    {
        Debug.Log("CLIENT sendPacket ");
        byte[] bytes_received = new byte[1024];
        byte[] temp           = new byte[sizeof(short)];
        int    c   = 0;
        int    pos = 0;

        addBaseRequest();

        //Now, add the total controls count to the beginning of the data string...
        temp = BitConverter.GetBytes((short)mSendControls);
        for (int i = 0; i < sizeof(short); i++)
        {
            mSendBuffer[0 + i] = temp[i];
        }

        Debug.Log("Sending " + mSendControls + " controls, " + mSendByteCounter + " bytes,  mCurrentTick " + mCurrentTick);
        mWorkSocket.Send(mSendBuffer);
        Debug.Log("Sent packet!");

        mSendByteCounter = sizeof(short);
        mSendControls    = 0;
        clearSendPacket();

        mClientStage = clientConnectStage.PacketSent;
    }
Ejemplo n.º 3
0
    public void tick()
    {
        if (mServer)
        {
            switch (mServerStage)
            {
            case serverConnectStage.NoServerSocket:
                createListenSocket(); break;

            case serverConnectStage.ServerSocketCreated:
                bindListenSocket(); break;

            case serverConnectStage.ServerSocketBound:
                connectListenSocket(); break;

            case serverConnectStage.ServerSocketListening:
                acceptConnection(); break;

            case serverConnectStage.ServerSocketAccepted:
                receivePacket(); break;

            case serverConnectStage.PacketReceived:
                readPacket(); break;

            case serverConnectStage.PacketRead:
                mServerStage = serverConnectStage.ServerSocketListening;
                break;
            }
        }
        else
        {
            Debug.Log("Client dataSource stage: " + mClientStage.ToString());
            switch (mClientStage)
            {
            case clientConnectStage.NoClientSocket:
                connectSendSocket(); break;

            case clientConnectStage.ClientSocketCreated:
                break;

            case clientConnectStage.ClientSocketConnected:
                sendPacket();
                break;

            case clientConnectStage.PacketSent:
                mClientStage = clientConnectStage.ClientSocketConnected;
                //mCurrentTick = 501;//FIX: cheap hack to get us out of main loop in main.cpp
                break;
            }
        }
        mCurrentTick++;
    }
Ejemplo n.º 4
0
    public dataSource(bool server)
    {
        Debug.Log("Datasource constructor!!!");

        mServerStage = serverConnectStage.NoServerSocket;
        mClientStage = clientConnectStage.NoClientSocket;

        mServer = server;
        if (server)
        {
            mServer    = true;
            mListening = true;
        }
    }
Ejemplo n.º 5
0
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    public void connectSendSocket()
    {
        Debug.Log("CLIENT connectSendSocket ");

        mWorkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        if (mWorkSocket.Connected == false)
        {
            mWorkSocket.Connect(mRemoteEndPoint);
        }
        if (mWorkSocket.Connected)
        {
            mClientStage = clientConnectStage.ClientSocketConnected;
        }
    }