Exemple #1
0
        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("이미 접속한 채팅 서버 입니다.");
                }
            }
        }
Exemple #5
0
        // 서버 생성 버튼을 눌렀을 때
        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();
            }
        }
Exemple #6
0
        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");
            }
        }