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 acceptConnection()
 {
     mPacketCount = 0;
     Debug.Log("SERVER acceptConnection...");
     mListenSocket.BeginAccept(new AsyncCallback(AcceptCallback),
                               mListenSocket);
     mServerStage = serverConnectStage.ServerSocketAccepted;
 }
Ejemplo n.º 3
0
    /*
     * void openListenSocket()
     * {
     *  //if (mListenSocket.Connected == false)
     *  //{
     *  Debug.Log("LISTEN SOCKET attempting to bind...");
     *  mListenSocket.Bind(mRemoteEndPoint);
     *  mListenSocket.Listen(10);
     *  Debug.Log("Listen socket connected? " + mListenSocket.Connected.ToString());
     *  //}
     * }*/

    public void createListenSocket()
    {
        Debug.Log("SERVER createListenSocket...");
        mListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        //mListenSocket.Blocking = false;
        if (mListenSocket != null)
        {
            mServerStage = serverConnectStage.ServerSocketCreated;
        }
    }
Ejemplo n.º 4
0
 public void receivePacket()
 {
     Debug.Log("SERVER receivePacket...");
     if (mWorkSocket.Connected)
     {
         int bytes = mWorkSocket.Receive(mReturnBuffer, 1024, 0);
         if (bytes > 0)
         {
             mServerStage = serverConnectStage.PacketReceived;
         }
     }
 }
Ejemplo n.º 5
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.º 6
0
 public void bindListenSocket()
 {
     Debug.Log("SERVER bindListenSocket...");
     try
     {
         mListenSocket.Connect(mRemoteEndPoint);
         mServerStage = serverConnectStage.ServerSocketBound;
     }
     catch (Exception e)
     {
         Debug.Log("bindListenSocket ERROR: " + e.ToString());
     }
 }
Ejemplo n.º 7
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.º 8
0
    public void readPacket()
    {
        Debug.Log("SERVER readPacket...");
        short opcode, controlCount;//,packetCount;

        controlCount = readShort();
        for (short i = 0; i < controlCount; i++)
        {
            opcode = readShort();
            if (opcode == OPCODE_BASE)
            {   ////  keep contact, but no request /////////////////////////
                handleBaseRequest();
            }// else if (opcode==22) { // send us some number of packets after this one
             //	packetCount = readShort();
             //	if ((packetCount>0)&&(packetCount<=mMaxPackets))
             //		mPacketCount = packetCount;
             //}
        }

        clearReturnPacket();

        mServerStage = serverConnectStage.PacketRead;
    }
Ejemplo n.º 9
0
 public void connectListenSocket()
 {
     Debug.Log("SERVER connectListenSocket...");
     mListenSocket.Listen(100);
     mServerStage = serverConnectStage.ServerSocketListening;
 }