コード例 #1
0
        void MemberAcceptCallback(IAsyncResult ar)
        {
            // 클라이언트의 연결 요청을 수락한다.
            ClientStatus client = new ClientStatus();

            client.mySocket = memberSock.EndAccept(ar);

            // 또 다른 클라이언트의 연결을 대기한다.
            memberSock.BeginAccept(MemberAcceptCallback, null);

            AsyncObject obj = new AsyncObject(4096);

            obj.WorkingSocket = client.mySocket;

            // 연결된 클라이언트 리스트에 추가해준다.
            connectedMemberClients.Add(client);

            client.mySocket.BeginReceive(obj.Buffer, 0, 4096, 0, MemberDataReceived, obj);
        }
コード例 #2
0
        void OrderAcceptCallback(IAsyncResult ar)
        {
            // 클라이언트의 연결 요청을 수락한다.
            ClientStatus client = new ClientStatus();

            client.mySocket = OrderSock.EndAccept(ar);

            // 또 다른 클라이언트의 연결을 대기한다.
            OrderSock.BeginAccept(OrderAcceptCallback, null);

            AsyncObject obj = new AsyncObject(4096);

            obj.WorkingSocket = client.mySocket;

            byte[] bDts = new byte[100];
            client.mySocket.Receive(bDts);

            client.myNum = Convert.ToInt32(Encoding.UTF8.GetString(bDts));

            // 연결된 클라이언트 리스트에 추가해준다.
            connectedOrderClients.Add(client);

            client.mySocket.BeginReceive(obj.Buffer, 0, 4096, 0, OrderDataReceived, obj);
        }
コード例 #3
0
        void ChatAcceptCallback(IAsyncResult ar)
        {
            int    tempNum;
            string tempstr = null;
            bool   isOK    = false;
            // 클라이언트의 연결 요청을 수락한다.
            ClientStatus client = new ClientStatus();

            client.mySocket = mainSock.EndAccept(ar);

            // 또 다른 클라이언트의 연결을 대기한다.
            mainSock.BeginAccept(ChatAcceptCallback, null);

            AsyncObject obj = new AsyncObject(4096);

            obj.WorkingSocket = client.mySocket;

            byte[] checkString = new byte[5000];
            obj.WorkingSocket.Receive(checkString);
            string[] MemberInfo = new string[2];
            MemberInfo[0] = Encoding.UTF8.GetString(checkString).Split('\x01')[0];
            MemberInfo[1] = Encoding.UTF8.GetString(checkString).Split('\x01')[1];

            MemberInfo[0] = MemberInfo[0].Trim('\0');
            MemberInfo[1] = MemberInfo[1].Trim('\0');

            string          connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95;CharSet=utf8;";
            MySqlConnection conn    = new MySqlConnection(connstr);
            MySqlCommand    cmd     = conn.CreateCommand();
            string          sql     = "Select * from member";

            cmd.CommandText = sql;
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            MySqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                String[] arr = new String[2];
                arr[0]  = reader["ID"].ToString();
                arr[1]  = reader["Password"].ToString();
                tempstr = arr[0];
                if (arr[0].Equals(MemberInfo[0]) && arr[1].Equals(MemberInfo[1]))
                {
                    isOK = true;
                    foreach (ClientStatus a in connectedChatClients)
                    {
                        if (arr[0].Equals(a.myID))
                        {
                            isOK = false;
                            break;
                        }
                        else
                        {
                            isOK = true;
                        }
                    }
                    break;
                }
            }

            conn.Dispose();

            if (isOK)
            {
                byte[] b = Encoding.UTF8.GetBytes("GoodToLogin");
                client.myID = tempstr;
                obj.WorkingSocket.Send(b);
            }

            else
            {
                byte[] b = Encoding.UTF8.GetBytes("LoginDisabled");
                obj.WorkingSocket.Send(b);
                return;
            }

            Random r = new Random();

            for (; ;)
            {
                int check = 0;
                tempNum = r.Next(1, 36);
                for (int i = 0; i < connectedChatClients.Count; i++)
                {
                    if (tempNum == connectedChatClients[i].myNum)
                    {
                        check = 1;
                        break;
                    }
                }
                if (check == 1)
                {
                    continue;
                }
                else
                {
                    client.myNum = tempNum;
                    break;
                }
            }
            obj.WorkingNum = client.myNum;

            byte[] bDts = Encoding.UTF8.GetBytes(obj.WorkingNum.ToString());
            obj.WorkingSocket.Send(bDts);

            // 연결된 클라이언트 리스트에 추가해준다.
            connectedChatClients.Add(client);
            string tempString = "pictureBox" + connectedChatClients.Last().myNum.ToString();

            foreach (Control x in splitContainer1.Panel1.Controls) //번호에 해당하는 픽쳐박스를 찾는다.
            {
                if (x.GetType() == typeof(System.Windows.Forms.PictureBox))
                {
                    PictureBox a = (PictureBox)x;
                    if (a.Name.Substring(10) == connectedChatClients.Last().myNum.ToString()) //pictureBox 문자열을 제거하고 뒤의 숫자만 비교
                    {
                        a.BackColor = Color.FromArgb(255, 255, 255);
                    }
                }
            }
            AnySound.PlaySoundClientLogin(Convert.ToString(client.myNum));

            client.mySocket.BeginReceive(obj.Buffer, 0, 4096, 0, ChatDataReceived, obj);
        }