예제 #1
0
    public bool ConnectTo(
        string serverIP, int serverPort, int clientPort,
        NetworkingCommon.ConnectArgs connArgs = NetworkingCommon.ConnectArgs.DirectConnectRequest,
        string roomName = "Default",
        string userName = "******"
        )
    {
        Debug.Log("Attempting to create udp socket. ServerIP = " + serverIP + " Server port = " + serverPort + " Client port =" + clientPort);
        try
        {
            endPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);

            Debug.Log("endpoint address family : " + endPoint.AddressFamily.ToString());

            socket = new UdpClient(clientPort);
            socket.Connect(endPoint);
            socket.BeginReceive(ReceiveCallback, null);

            SendConnectRequest(connArgs, roomName, userName);

            return(true);
        }
        catch (SocketException e)
        {
            string message = "Failed to create udp socket\n" + e.ToString();
            MultiplayerGUI.ErrorMessageText.text = message;
            Debug.Log(message);

            return(false);
        }
    }
예제 #2
0
    public void SendConnectRequest(
        NetworkingCommon.ConnectArgs connArgs,
        string roomName,
        string userName
        )
    {
        // Attempt to begin the connection
        // #POSSIBLE_PROBLEM
        // We may want to continuously send this until we get responce, since we can never trust udp to arrive..
        byte[] userName_raw = Encoding.ASCII.GetBytes(userName);
        byte[] roomName_raw = Encoding.ASCII.GetBytes(roomName);

        ByteBuffer namesCombined = new ByteBuffer();

        namesCombined.Add(new byte[] { (byte)roomName_raw.Length });
        namesCombined.Add(roomName_raw);
        namesCombined.Add(new byte[] { (byte)userName_raw.Length });
        namesCombined.Add(userName_raw);

        // By default we ask for directly connecting..
        //Package package = new Package(1, 0, NetworkingCommon.MESSAGE_TYPE__ConnectRequest, (ushort)userName.Length, userName_raw);
        Package package = new Package(0, 0, NetworkingCommon.Convert_ConnArgs_To_Byte(connArgs), (ushort)namesCombined.Bytes.Length, namesCombined.Bytes);

        SendData(package.Buffer.Bytes);
    }
예제 #3
0
    private void StoreConnectProperties(NetworkingCommon.ConnectArgs connectArgs)
    {
        string serverIP       = inputField_serverIP.text;
        string serverPort_str = inputField_serverPort.text.ToString();
        string clientPort_str = inputField_clientPort.text.ToString();
        string userName       = inputField_userName.text.ToString();
        string roomName       = inputField_roomName.text.ToString();

        if (serverIP.Length <= 0)
        {
            serverIP = inputField_serverIP.placeholder.gameObject.GetComponent <Text>().text;
        }
        if (serverPort_str.Length <= 0)
        {
            serverPort_str = inputField_serverPort.placeholder.gameObject.GetComponent <Text>().text;
        }
        if (clientPort_str.Length <= 0)
        {
            clientPort_str = inputField_clientPort.placeholder.gameObject.GetComponent <Text>().text;
        }
        if (userName.Length <= 0)
        {
            userName = inputField_userName.placeholder.gameObject.GetComponent <Text>().text;
        }
        if (roomName.Length <= 0)
        {
            roomName = inputField_roomName.placeholder.gameObject.GetComponent <Text>().text;
        }

        int serverPort = Int32.Parse(serverPort_str);
        int clientPort = Int32.Parse(clientPort_str);


        connectProperties.serverIP   = serverIP;
        connectProperties.serverPort = serverPort;
        connectProperties.clientPort = clientPort;

        connectProperties.userName = userName;
        connectProperties.roomName = roomName;

        connectProperties.connectArgs = connectArgs;
    }