Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            // 소켓 생성하고 로그인 서버와 통신 준비
            System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
            NetworkStream serverStream = default(NetworkStream);
            clientSocket.Connect("127.0.0.1", 8000);
            serverStream = clientSocket.GetStream();

            // 로그인 폼에서 정보 받아와서, Json 형식으로 변환
            UserInfo userinfo = new UserInfo(LOGIN_RESULT.LOGIN, textBox1.Text, textBox2.Text);
            string output = JsonConvert.SerializeObject(userinfo);

            // Json 형식으로 변환된 정보를 byte 형식으로 전송
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(output);
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();

            // 로그인 리턴 정보를 받기 위해 새로운 버퍼 생성
            int buffSize = 0;
            byte[] inStream = new byte[LENGTH.MAX_PACKET_LEN];
            buffSize = clientSocket.ReceiveBufferSize;

            // byte 형식으로 정보 가져와서 Json 형식으로 변환
            serverStream.Read(inStream, 0, buffSize);
            string returndata = System.Text.Encoding.ASCII.GetString(inStream);
            LoginReturn lg_return = JsonConvert.DeserializeObject<LoginReturn>(returndata);

            if (lg_return.task == LOGIN_RESULT.LOGIN)
            {
                // 받아온 로그인 리턴값이 성공이면 소켓을 닫고 로비 폼으로 넘어감
                if (lg_return.result == LOGIN_RESULT.LOGIN_SUCCESS)
                {
                    clientSocket.Close();
                    Form form2 = new Form2(this);
                    form2.ShowDialog();
                }

                // 실패했다면 오류 메세지를 폼의 결과창에 출력
                else
                {
                    if (lg_return.result == LOGIN_RESULT.LOGIN_FAIL_NO_ID)
                    {
                        textBox3.Text = "No such ID!";
                    }
                    else if (lg_return.result == LOGIN_RESULT.LOGIN_FAIL_PASSWORD)
                    {
                        textBox3.Text = "Wrong password!";
                    }
                }
            }

            this.Close();
        }
Пример #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            // 소켓 생성하고 로그인 서버와 통신 준비
            System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
            NetworkStream serverStream = default(NetworkStream);
            clientSocket.Connect("192.168.0.45", 8000);
            serverStream = clientSocket.GetStream();

            // 로그인 폼에서 정보 받아와서, Json 형식으로 변환
            UserInfo userinfo = new UserInfo(LOGIN_RESULT.SIGNUP, textBox1.Text, textBox2.Text);
            string output = JsonConvert.SerializeObject(userinfo);

            // Json 형식으로 변환된 정보를 byte 형식으로 전송
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(output);
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();

            // 가입 리턴 정보를 받기 위해 새로운 버퍼 생성
            int buffSize = 0;
            byte[] inStream = new byte[LENGTH.MAX_PACKET_LEN];
            buffSize = clientSocket.ReceiveBufferSize;

            // byte 형식으로 정보 가져와서 Json 형식으로 변환
            serverStream.Read(inStream, 0, buffSize);
            string returndata = System.Text.Encoding.ASCII.GetString(inStream);
            LoginReturn lg_return = JsonConvert.DeserializeObject<LoginReturn>(returndata);

            if (lg_return.task == LOGIN_RESULT.SIGNUP)
            {
                // 성공 여부에 따라 폼의 결과창에 결과 출력
                if (lg_return.result == LOGIN_RESULT.SIGNUP_SUCCESS)
                {
                    textBox3.Text = "Sign up success!";
                }
                else if (lg_return.result == LOGIN_RESULT.SIGNUP_FAIL_ID_EXISTS)
                {
                    textBox3.Text = "Same ID exists!";
                }
            }

            clientSocket.Close();
        }