void OnSendData(object sender, EventArgs e) { // 서버가 대기중인지 확인한다. if (!mainSock.IsBound) { MsgBoxHelper.Warn("서버가 실행되고 있지 않습니다!"); return; } // 보낼 텍스트 string tts = txtTTS.Text.Trim(); if (string.IsNullOrEmpty(tts)) { MsgBoxHelper.Warn("텍스트가 입력되지 않았습니다!"); txtTTS.Focus(); return; } // ID 와 메세지를 담도록 만든다. // 문자열을 utf8 형식의 바이트로 변환한다. byte[] bDts = Encoding.UTF8.GetBytes(nameID + ':' + tts); // 서버에 전송한다. mainSock.Send(bDts); // 전송 완료 후 텍스트박스에 추가하고, 원래의 내용은 지운다. AppendText(txtHistory, string.Format("[보냄]{0}: {1}", nameID, tts)); txtTTS.Clear(); }
void OnSendData(object sender, EventArgs e) { // 서버가 대기중인지 확인한다. if (!mainSock.IsBound) { MsgBoxHelper.Warn("서버가 실행되고 있지 않습니다!"); return; } // 보낼 텍스트 string tts = txtTTS.Text.Trim(); if (string.IsNullOrEmpty(tts)) { MsgBoxHelper.Warn("텍스트가 입력되지 않았습니다!"); txtTTS.Focus(); return; } // 문자열을 utf8 형식의 바이트로 변환한다. byte[] bDts = Encoding.UTF8.GetBytes("Server" + ':' + tts); // 연결된 모든 클라이언트에게 전송한다. for (int i = connectedClients.Count - 1; i >= 0; i--) { Socket socket = connectedClients[i]; try { socket.Send(bDts); } catch { // 오류 발생하면 전송 취소하고 리스트에서 삭제한다. try { socket.Dispose(); } catch { } connectedClients.RemoveAt(i); } } // 전송 완료 후 텍스트박스에 추가하고, 원래의 내용은 지운다. AppendText(txtHistory, string.Format("[보냄]server: {0}", tts)); txtTTS.Clear(); }
// MARK - 클라이언트의 서버 생성 private void button2_Click(object sender, EventArgs e) { string createServerName = ""; string createServerCode = ""; if (userName.Text == "Input User Name" || userName.Text == null) { MsgBoxHelper.Warn("사용하실 이름을 입력해주세요"); userName.Focus(); } /// MARK - 서버 생성 폼으로부터, 서버 명 - 서버 코드 수신 else { userID = userName.Text.Trim(); createChattingServer createServer = new createChattingServer(); if (createServer.ShowDialog() == DialogResult.OK) { createServerName = createServer.returnServerName; createServerCode = createServer.returnServerCode; byte[] b = Encoding.UTF8.GetBytes("createServer" + ':' + createServerName + ':' + createServerCode); clientSock.Send(b); createdServerNameList.Add(createServerName); createdServerList.Items.Add(createServerName); } } }
// MARK - 접속하고자 하는 채팅을 더블클릭 했을 때 private void createdServerList_MouseDoubleClick(object sender, MouseEventArgs e) { int index = createdServerList.IndexFromPoint(e.Location); userID = userName.Text; if (userName.Text == "Input User Name" || userName.Text == null) { MsgBoxHelper.Warn("닉네임을 먼저 입력하세요."); userName.Focus(); } else { if (createdServerNameList[index] != involvedServerName) { if (index != ListBox.NoMatches) { txtBox.Clear(); involvedServerName = createdServerNameList[index]; serverName.Text = involvedServerName; if (involvedServerCode != null) { byte[] b = Encoding.UTF8.GetBytes("exitInvolvedServer" + ':' + involvedServerCode + ':' + userID + ':' + index); clientSock.Send(b); } else { byte[] b = Encoding.UTF8.GetBytes("requestServerCode" + ':' + userID + ':' + index); clientSock.Send(b); } AppendText(txtBox, string.Format("채팅방 {0}에 접속하였습니다.", createdServerNameList[index])); sendMsgButton.Enabled = true; } } else { MsgBoxHelper.Warn("이미 접속한 채팅 서버 입니다."); } } }
// 서버 생성 버튼을 눌렀을 때 private void button2_Click(object sender, EventArgs e) { if (createServerName.Text == null || createServerName.Text.Length < 3) { MsgBoxHelper.Warn("서버 명은 3글자 이상으로 해주세요"); createServerName.Focus(); } else if (createServerName.Text == "Input server name" || createServerName.Text == "input server name") { MsgBoxHelper.Warn("생성하실 서버 명을 입력해주세요."); createServerName.Focus(); } else { Random r = new Random(); DialogResult = DialogResult.OK; serverName = createServerName.Text.Trim(); serverCode = r.Next(1, 1000).ToString().Trim(); Close(); } }
void OnSendData(object sender, EventArgs e) { // 서버가 대기중인지 확인한다. if (!mainSock.IsBound) { MsgBoxHelper.Warn("서버가 실행되고 있지 않습니다!"); return; } // 보낼 텍스트 if (string.IsNullOrEmpty(number)) { MsgBoxHelper.Warn("숫자가 입력되지 않았습니다!"); return; } if (number.Length < 3) { MsgBoxHelper.Warn("3자리 숫자를 입력해주세요."); return; } if (number.Length > 3) { MsgBoxHelper.Warn("3자리 숫자를 입력해주세요."); btn1.Image = null; btn2.Image = null; btn3.Image = null; number = ""; return; } // 서버 ip 주소와 메세지를 담도록 만든다. IPEndPoint ip = (IPEndPoint)mainSock.LocalEndPoint; string addr = ip.Address.ToString(); // 문자열을 utf8 형식의 바이트로 변환한다. byte[] buffer = Encoding.UTF8.GetBytes(addr + '\x01' + number); // 서버에 전송한다. mainSock.Send(buffer); // 이미지를 초기화한다. btn1.Image = null; btn2.Image = null; btn3.Image = null; // 모든 버튼을 활성화 시킨다. button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; button5.Enabled = true; button6.Enabled = true; button7.Enabled = true; button8.Enabled = true; button9.Enabled = true; button0.Enabled = true; // 전송 완료 후 텍스트박스에 추가하고, 원래의 내용은 지운다. AppendText(textBox1, string.Format("[보냄]{0}: {1}", addr, number)); number = ""; count--; lbcount.Text = count.ToString("D2") + " / 10"; if (count == 0) { MessageBox.Show("남은 기회가 없습니다.", "Message"); } }