void ChatDataReceived(IAsyncResult ar) { try { AsyncObject obj = (AsyncObject)ar.AsyncState; int received = obj.WorkingSocket.EndReceive(ar); if (received <= 0) { obj.WorkingSocket.Close(); return; } // 텍스트로 변환한다. string text = Encoding.UTF8.GetString(obj.Buffer); formMadeByRcv = true; GetChatForm(this, obj.WorkingNum.ToString() + "번 자리", obj.WorkingNum, text); // 데이터를 받은 후엔 다시 버퍼를 비워주고 같은 방법으로 수신을 대기한다. obj.ClearBuffer(); // 수신 대기 obj.WorkingSocket.BeginReceive(obj.Buffer, 0, 4096, 0, ChatDataReceived, obj); } catch { AsyncObject objtemp = (AsyncObject)ar.AsyncState; foreach (Control x in splitContainer1.Panel1.Controls) { if (x.GetType() == typeof(System.Windows.Forms.PictureBox)) { PictureBox a = (PictureBox)x; if (a.Name.Substring(10) == objtemp.WorkingNum.ToString()) //pictureBox 문자열을 제거하고 뒤의 숫자만 비교 { a.BackColor = Color.Black; foreach (ClientStatus cs in connectedChatClients) { if (cs.myNum.Equals(objtemp.WorkingNum)) { connectedChatClients.Remove(cs); break; } } } } } AnySound.PlaySoundClientLogout(Convert.ToString(objtemp.WorkingNum)); } }
void OrderDataReceived(IAsyncResult ar) { try { AsyncObject obj = (AsyncObject)ar.AsyncState; int received = obj.WorkingSocket.EndReceive(ar); if (received <= 0) { obj.WorkingSocket.Close(); return; } string text = Encoding.UTF8.GetString(obj.Buffer); string strToSend = "ProductList"; if (text.Contains("All") == true) { string connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95"; MySqlConnection conn = new MySqlConnection(connstr); MySqlCommand cmd = conn.CreateCommand(); string sql = "Select * from product"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { String[] arr = new String[3]; arr[0] = reader["Name"].ToString(); arr[1] = reader["Price"].ToString(); arr[2] = reader["Stock"].ToString(); strToSend = strToSend + arr[0] + '\x01' + arr[1] + '\x01' + arr[2] + '\x02'; } byte[] bDts = Encoding.UTF8.GetBytes(strToSend); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("Ramen") == true) { string connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95"; MySqlConnection conn = new MySqlConnection(connstr); MySqlCommand cmd = conn.CreateCommand(); string sql = "Select * from product Where Sort = 'Ramen'"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { String[] arr = new String[3]; arr[0] = reader["Name"].ToString(); arr[1] = reader["Price"].ToString(); arr[2] = reader["Stock"].ToString(); strToSend = strToSend + arr[0] + '\x01' + arr[1] + '\x01' + arr[2] + '\x02'; } byte[] bDts = Encoding.UTF8.GetBytes(strToSend); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("Snack") == true) { string connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95"; MySqlConnection conn = new MySqlConnection(connstr); MySqlCommand cmd = conn.CreateCommand(); string sql = "Select * from product Where Sort = 'Snack'"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { String[] arr = new String[3]; arr[0] = reader["Name"].ToString(); arr[1] = reader["Price"].ToString(); arr[2] = reader["Stock"].ToString(); strToSend = strToSend + arr[0] + '\x01' + arr[1] + '\x01' + arr[2] + '\x02'; } byte[] bDts = Encoding.UTF8.GetBytes(strToSend); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("Beverage") == true) { string connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95"; MySqlConnection conn = new MySqlConnection(connstr); MySqlCommand cmd = conn.CreateCommand(); string sql = "Select * from product Where Sort = 'Beverage'"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { String[] arr = new String[3]; arr[0] = reader["Name"].ToString(); arr[1] = reader["Price"].ToString(); arr[2] = reader["Stock"].ToString(); strToSend = strToSend + arr[0] + '\x01' + arr[1] + '\x01' + arr[2] + '\x02'; } byte[] bDts = Encoding.UTF8.GetBytes(strToSend); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("ETC") == true) { string connstr = "Server=127.0.0.1;Port=3306;Database=31337;Uid=root;Pwd=amen95"; MySqlConnection conn = new MySqlConnection(connstr); MySqlCommand cmd = conn.CreateCommand(); string sql = "Select * from product Where Sort = 'ETC'"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { String[] arr = new String[3]; arr[0] = reader["Name"].ToString(); arr[1] = reader["Price"].ToString(); arr[2] = reader["Stock"].ToString(); strToSend = strToSend + arr[0] + '\x01' + arr[1] + '\x01' + arr[2] + '\x02'; } byte[] bDts = Encoding.UTF8.GetBytes(strToSend); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("ProductImage") == true) { string receivedString = text.Split('\x01')[1]; receivedString = receivedString.Trim('\0'); //소켓 전송시 문자열 뒤에 \0 문자가 꽉 차 있음. 그거를 제거. string arr = ""; 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 product Where Name = '" + receivedString + "'"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { arr = reader["Image"].ToString(); } byte[] bDts = ImageToByteArray(Image.FromFile(@"C:\31337\image\" + arr)); obj.WorkingSocket.Send(bDts); conn.Dispose(); } else if (text.Contains("Order") == true) { text = text.Replace("Order" + '\x01', ""); text = text.Trim('\0'); int i = Convert.ToInt32(text.Split('\x01')[0].ToString()); text = text.Replace(i.ToString() + '\x01', ""); string[] receivedString = text.Split('\x02'); string temp = "OrderSuccessed"; byte[] bDts = Encoding.UTF8.GetBytes(temp); SetOrderList(lvOrderList, i, receivedString); if (OrderBool == true) { obj.WorkingSocket.Send(bDts); } else if (OrderBool == false) { temp = "OrderFailed"; bDts = Encoding.UTF8.GetBytes(temp); obj.WorkingSocket.Send(bDts); } } // 데이터를 받은 후엔 다시 버퍼를 비워주고 같은 방법으로 수신을 대기한다. obj.ClearBuffer(); // 수신 대기 obj.WorkingSocket.BeginReceive(obj.Buffer, 0, 4096, 0, OrderDataReceived, obj); } catch (Exception e) { } }
void MemberDataReceived(IAsyncResult ar) { try { AsyncObject obj = (AsyncObject)ar.AsyncState; int received = obj.WorkingSocket.EndReceive(ar); if (received <= 0) { obj.WorkingSocket.Close(); return; } string text = Encoding.UTF8.GetString(obj.Buffer); if (text.Contains("MemberIDCheck") == true) { bool isOK = true; text = text.Replace("MemberIDCheck" + '\x01', ""); text = text.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 = reader["ID"].ToString(); if (arr.Equals(text)) { isOK = false; } } if (isOK) { byte[] bDts = Encoding.UTF8.GetBytes("SignUpSuccess"); obj.WorkingSocket.Send(bDts); } else { byte[] bDts = Encoding.UTF8.GetBytes("SignUpFail"); obj.WorkingSocket.Send(bDts); } conn.Dispose(); } else if (text.Contains("SetToMember") == true) { text = text.Replace("SetToMember" + '\x02', ""); text = text.Trim('\0'); String[] arr = text.Split('\x01'); 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 = "Insert Into member Values('" + arr[0] + "', '" + arr[1] + "', '" + arr[2] + "', '" + arr[3] + "')"; cmd.CommandText = sql; try { conn.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } cmd.ExecuteNonQuery(); conn.Dispose(); } obj.ClearBuffer(); // 수신 대기 obj.WorkingSocket.BeginReceive(obj.Buffer, 0, 4096, 0, MemberDataReceived, obj); } catch (Exception e) { } }