private void Connect_Btn_Click(object sender, RoutedEventArgs e) { if (client_Socket.Connected) { MessageBox.Show("이미 연결되어 있습니다", "경고", MessageBoxButton.OK, MessageBoxImage.Warning); return; } int Client_Port; if (!int.TryParse(TxtPort.Text, out Client_Port)) { MessageBox.Show("포트번호를 다시 입력해 주십시오", "경고", MessageBoxButton.OK, MessageBoxImage.Warning); TxtPort.Focus(); TxtPort.SelectAll(); return; } try { client_Socket.Connect(Txt_IPadRess.Text, Client_Port); } catch { MessageBox.Show("연결에 실패하였습니다", "에러", MessageBoxButton.OK, MessageBoxImage.Error); Txt_history.Text += string.Format("\n서버와 연결실패"); return; } Txt_history.Text += string.Format("\n서버와 연결되었습니다"); Client_AsyncObject obj = new Client_AsyncObject(4096); obj.Working_socket = client_Socket; client_Socket.BeginReceive(obj.Buffer, 0, obj.BufferSize, 0, DataReceived, obj); }
void DataReceived(IAsyncResult ar) { Client_AsyncObject obj = (Client_AsyncObject)ar.AsyncState; int received = obj.Working_socket.EndReceive(ar); if (received <= 0) { obj.Working_socket.Close(); return; } string text = Encoding.UTF8.GetString(obj.Buffer); string[] Client_tokens = text.Split('\x01'); string ip = Client_tokens[0]; string msg = Client_tokens[1]; Txt_history.Text += string.Format("\n[받음]{0} : {1}", ip, msg); obj.ClearBuffer(); obj.Working_socket.BeginReceive(obj.Buffer, 0, 4096, 0, DataReceived, obj); }