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); }
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); }
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); }