// 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; } }
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; }
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++; }
public dataSource(bool server) { Debug.Log("Datasource constructor!!!"); mServerStage = serverConnectStage.NoServerSocket; mClientStage = clientConnectStage.NoClientSocket; mServer = server; if (server) { mServer = true; mListening = true; } }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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; } }