public void SendToClient(NetworkBase.UDPClient Client, byte[] data) { string stringdata = Encoding.UTF8.GetString(data); Debug.Log("Sent: " + (stringdata.StartsWith("<")? "data" : stringdata)); this.client.Send(data, data.GetLength(0), Client.endPoint); }
// Use this for initialization void Start() { client = new UdpClient(); Mainserver = new NetworkBase.UDPClient(IPAddress.Parse(SERVER_IP), SERVER_PORT); instance = this; }
private void receive(IAsyncResult res) { IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 8000); byte[] received = client.EndReceive(res, ref RemoteIpEndPoint); string stringData = Encoding.UTF8.GetString(received); Debug.Log("received: " + stringData); if (Connectedclient == null && networkBase == null && stringData.Contains(":")) //it contains a ip:port { string[] splitData = stringData.Split(':'); Connectedclient = new NetworkBase.UDPClient(IPAddress.Parse(splitData[0]), int.Parse(splitData[1])); /* * //if (splitData[2] == "server") StartServer(); * if (splitData[2] == "client") * { * string[] splitIDs = splitData[3].Split(','); * NetworkBase.playerIDs = new int[splitIDs.Length]; * for (int i = 0; i < splitIDs.Length; i++) * { * NetworkBase.playerIDs[i] = int.Parse(splitIDs[i]); * } * * StartClient(); * * } * * if(splitData[2] == "server") * { * //GameServer server = networkBase as GameServer; * //server.StartGame(new NetworkBase.UDPClient[] { Connectedclient }); * string[] splitIDs = splitData[3].Split(','); * NetworkBase.playerIDs = new int[splitIDs.Length]; * for (int i = 0; i < splitIDs.Length; i++) * { * NetworkBase.playerIDs[i] = int.Parse(splitIDs[i]); * } * * StartServer(); * }*/ if (!isServer) { networkBase.connectedClient = Connectedclient; } //Debug.Log(NetworkBase.GetLocalIPAddress() + ":" + GetLocalEndPoint()); //return; SendToClient(Connectedclient, Encoding.ASCII.GetBytes("work?")); //SendToClient(Mainserver, Encoding.ASCII.GetBytes("test123")); //SendToClient(Connectedclient, Encoding.ASCII.GetBytes("work?")); //Debug.Log(NetworkBase.GetLocalIPAddress() + ":" + GetLocalEndPoint()); //this.Start(); } Debug.Log("Started receiving " + (networkBase == null? "netman" : "base") + ".."); client.BeginReceive(networkBase == null? new AsyncCallback(receive) : new AsyncCallback(networkBase.receiveCallback), client); }
public override void receiveCallback(IAsyncResult res) { IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 8000); byte[] received = serverClient.EndReceive(res, ref RemoteIpEndPoint); serverClient.BeginReceive(new AsyncCallback(receiveCallback), null); string stringData = Encoding.ASCII.GetString(received); testFloat = 1; if (!stringData.StartsWith("<")) //testing only { Debug.Log(stringData); } if (!isReady && stringData.Contains(":")) //it contains a ip:port { testFloat = 2; string[] splitData = stringData.Split(':'); connectedClient = new NetworkBase.UDPClient(IPAddress.Parse(splitData[0]), int.Parse(splitData[1])); NetworkBase.playerIDs = new int[controllingPlayers]; int otherPlayers = int.Parse(splitData[2]); for (int i = 0; i < controllingPlayers; i++) { NetworkBase.playerIDs[i] = otherPlayers + i; } byte[] data = Encoding.ASCII.GetBytes("test123"); SendToClient(connectedClient, data); StartTestConnection(); testFloat = 3; } testFloat = 8; if (stringData == "TestConnection") { connectionSucces = true; } if (stringData == "StartGame") { testFloat = 9; isReady = true; NetManager.hasStarted = true; } //Debug.Log("received client: " + (stringData.StartsWith("<")? "data" : stringData)); //ping, in progress if (stringData == "PingResult") { testFloat = 10; receivedPackets--; receivedPing = true; isPinging = false; startedPing = false; } else { testFloat = 11; if (stringData.StartsWith("<")) { testFloat = 61; testFloat = received.Length; SerializeBase SB = DeserializeClass(received); testFloat = 63; HandleSerializedData(SB); testFloat = 62; } } //receiveCallback(res); testFloat = 4; //Debug.Log("started receiving.."); receivedPackets++; //serverClient.BeginReceive(new AsyncCallback(receiveCallback), null); }