Bạn ghé thăm diễn đàn lần đầu? hãy đăng ký ngay bây giờ để tham gia.
  • Đăng nhập:

Chào mừng bạn đến với ITVNN FORUM - Diễn đàn công nghệ thông tin.

Nếu đây là lần đầu tiên bạn tham gia diễn đàn, xin mời bạn xem phần Hỏi/Ðáp để biết cách dùng diễn đàn. Để có thể tham gia thảo luận bạn phải đăng ký làm thành viên, click vào đây để đăng ký.


  • Partner Area
    • ITVNN HOSTING - Thiết kế website, Cung cấp Domain, Hosting, VPS Việt Nam Anh Hùng - Thông tin truyền thông
kết quả từ 1 tới 5 trên 5
Tăng kích thước phông chữ Giảm kích thước phông chữ
  1. #1
    Cuni's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    231
    Giới tính
    Bài gởi
    144
    Level: 35 [?]
    Experience: 769,912
    Next Level: 824,290
    Cảm ơn 3
    Cảm ơn 2 lần / 2 Bài viết

    Default Tạo ứng dụng chat đơn giản với Java  

    Làm chương trình phía Client
    Trong ứng dụng này, chúng ta se thao tác với .Net Sockets. Chúng ta có 3 lớp chính là: TcpClient, TcpListener và NetworkStream. Trong đó, ứng dụng Listener luôn chạy đầu tiên bằng cách sử dụng phương thức start(): TcpListener.start(). Chúng ta sẽ viết ứng dụng TcpClient đầu tiên.

    Đây là hàm có chức năng nhận tin nhắn:
    Code: 
    public void ThreadProcReceive()
    {
         for (;;)
         {
              received = new byte[1024];
              int readBytes = 0;
     
              try
              {
                     readBytes = tcp.GetStream().Read(received,0,received.Length); 
              } 
              catch (ObjectDisposedException)  { return; 
              }
              if (readBytes == 8)
              {
                    StringBuilder shutMessage = new StringBuilder(8);
                    for (int count = 0; count < 8; count++)
                   {
                          char ch = (char)received[count];
                          shutMessage = shutMessage.Append(ch);
                   }
                   string shut = "shutdown"; 
                   string receivedMessage = shutMessage.ToString();
                   if (receivedMessage.Equals(shut))
                   {
                           MessageBox.Show(this,"Shutdown Request has arrived from the \nconnected party.\nYou  cannot send message anymore.\nPlease close the window.","Shut down   Request",MessageBoxButtons.OK,MessageBoxIcon.Information);
    buttonSend.Enabled = false;
                            return;
                    }
            }
            StringBuilder str = new StringBuilder(1024);
            for (int count = 0; count < readBytes; count++)
            {
                    char ch = (char)received[count];
                    str = str.Append(ch);
                    str = str.Append(" ");
            }
            textBoxSendText.Text = str.ToString();
            if (formClosing == true)
            {
                    break;
            }
    }
    Đây là hàm xử lý sự kiện khi nhấn nút Connect:
    Code: 
    private void buttonConnect_Click(object sender, System.EventArgs e)
    {
            textBoxIPAddress.Enabled = false;
            IPAddress address = IPAddress.Parse(ipAddress);
    
            tcp = new TcpClient((new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0],4002)));
            LingerOption lingerOption = new LingerOption(false, 1);
            tcp.LingerState = lingerOption;
            tcp.Connect(new IPEndPoint(Dns.Resolve(ipAddress).AddressList[0],4001));
            buttonSend.Enabled = true;
            ((Button)sender).Enabled = false;
            receiveThread = new Thread(new ThreadStart(ThreadProcReceive));
            receiveThread.Name = "Client's Receive Thread";
            receiveThread.ApartmentState = ApartmentState.MTA;
            receiveThread.Start();
    }
    Đây là hàm xử lý sự kiện khi đóng Form1:
    Code: 
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
            dataToSend = new byte[]{(byte)'s',(byte)'h',(byte)'u',(byte)'t',(byte)'d',(byte)'o',(byte)'w',(byte)'n'};
            tcp.GetStream().Write(dataToSend,0,dataToSend.Length);
            tcp.Close();
    }
    
    private void textBoxIPAddress_TextChanged(object sender, System.EventArgs e)
    {
            ipAddress = textBoxIPAddress.Text;
    }
    Đây là hàm xử lý sự kiện khi nhấn nút Send:
    Code: 
    private void buttonSend_Click(object sender, System.EventArgs e)
    {
            if (textBoxDataToSend.Text.Length != 0)
            {
                   char[] charArray = textBoxDataToSend.Text.ToCharArray(0,textBoxDataToSend.Text.Length);
                   dataToSend = new byte[textBoxDataToSend.Text.Length];
                   for (int charCount = 0; charCount < textBoxDataToSend.Text.Length; charCount++)
                   {
                           dataToSend[charCount] = (byte)charArray[charCount];
                   } 
            }
            else
            {
                    dataToSend = new byte[]{(byte)'e',(byte)'m',(byte)'p',(byte)'t',(byte)'y'};
            }
    
            tcp.GetStream().Write(dataToSend,0,dataToSend.Length);
            textBoxDataToSend.Text = ""; 
    }
    Download mã nguồn:
    http://www.mediafire.com/?dyymmmizmmm
    thay đổi nội dung bởi: Cuni; 10-09-2009 lúc 02:10 PM

  2. #2
    Cuni's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    231
    Giới tính
    Bài gởi
    144
    Level: 35 [?]
    Experience: 769,912
    Next Level: 824,290
    Cảm ơn 3
    Cảm ơn 2 lần / 2 Bài viết

    Default

    Làm chương trình phía server

    Đối tượng NetworkStream được sử dụng cho việc gửi và nhận dữ liệu thông qua giao thức TCP/IP. Các dữ liệu truyền đến sẽ được chuyển thành dạng chuỗi và được hiển thị trong Textbox.

    Ứng dụng phía Server gồm 2 form. Form1 có giao diện như hình vẽ sau và một sự kiện với đoạn code sau.
    Code: 
    private String hostPort = "";
    
    private void button1_Click(object sender, System.EventArgs e)
    {
        button1.Enabled = false;
        this.Hide();
        Form2 blockedForm = new Form2(hostPort, this);
        blockedForm.ShowDialog();
        if (blockedForm.formClosed == true)
        {
            this.Close();
        }
    }
    Form 2 có giao diện gần giống với ứng dụng Client.
    Code: 
    private void ThreadProcPollOnEthernet()
    {
        for (;; )
        {
            Thread.Sleep(100);
            byte[] msg = new Byte[Constants.maxNoOfBytes];
            byte count1 = 0x01;
            for (int i = 0; i < msg.Length; i++)
            {
                msg[i] = count1++;
            }
            try
            {
                if (formClosing == true)
                {
                    return;
                }
    
                int readBytes = tcp.GetStream().Read(msg, 0, msg.Length);
    
                if (readBytes == 8)
                {
                    StringBuilder shutMessage = new StringBuilder(8);
                    for (int count = 0; count < 8; count++)
                    {
                        char ch = (char)msg[count];
                        shutMessage = shutMessage.Append(ch);
                    }
                    string shut = "shutdown";
                    string receivedMessage = shutMessage.ToString();
                    if (receivedMessage.Equals(shut))
                    {
                        MessageBox.Show(this, "Shutdown Request has arrived from the \nconnected party.\nYou cannot send message anymore.\nPlease close the window.", "Shut Down Request", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        buttonSend.Enabled = false;
                        return;
                    }
                }
    
                StringBuilder str = new StringBuilder(Constants.maxNoOfBytes);
                for (int count = 0; count < readBytes; count++)
                {
                    char ch = (char)msg[count];
                    str = str.Append(ch);
                    str = str.Append(" ");
                }
                textBox1.Text = str.ToString();
            }
            catch (IOException)
            {
                return;
            }
        }
    }
    
    private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        dataToSend = new byte[] { (byte)'s', (byte)'h', (byte)'u', (byte)'t', (byte)'d', (byte)'o', (byte)'w', (byte)'n' };
        tcp.GetStream().Write(dataToSend, 0, dataToSend.Length);
        tcpListener.Stop();
        formClosed = true;
        refToForm1.Close();
    }
    
    private void textBox2_TextChanged(object sender, System.EventArgs e)
    {
        dataReadyToSend.Set();
    }
    
    private void buttonSend_Click(object sender, System.EventArgs e)
    {
        if (textBox2.Text.Length != 0)
        {
            char[] charArray = textBox2.Text.ToCharArray(0, textBox2.Text.Length);
            dataToSend = new byte[textBox2.Text.Length];
            for (int charCount = 0;
            charCount < textBox2.Text.Length;
            charCount++)
            {
                dataToSend[charCount] = (byte)charArray[charCount];
            }
        }
        else
        {
            dataToSend = new byte[] { (byte)'e', (byte)'m', (byte)'p', (byte)'t', (byte)'y' };
        }
        tcp.GetStream().Write(dataToSend, 0, dataToSend.Length);
        textBox2.Text = "";
    }


    Download mã nguồn:
    http://www.mediafire.com/?ytmw1mmu0yt

    thay đổi nội dung bởi: Cuni; 10-09-2009 lúc 02:11 PM

  3. Thành viên sau đây nói lời Cảm ơn tới Cuni cho bài viết hữu ích này:

    actionvl (20-02-2011)

  4. #3
    nguoicodon's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    131
    Tuổi
    36
    Giới tính
    Bài gởi
    77
    Level: 32 [?]
    Experience: 411,834
    Next Level: 453,790
    Cảm ơn 0
    Cảm ơn 1 lần / 1 Bài viết

    Default

    Cho xin bản demo đi bạn ơi

  5. #4
    Cuni's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    231
    Giới tính
    Bài gởi
    144
    Level: 35 [?]
    Experience: 769,912
    Next Level: 824,290
    Cảm ơn 3
    Cảm ơn 2 lần / 2 Bài viết

    Default

    Trích Nguyên văn bởi nguoicodon View Post
    Cho xin bản demo đi bạn ơi
    Hình giao diện demo có, Code cũng có vậy mà còn xin cái bản demo gì nữa
    Nhưng mình cũng đã cập nhật code mã nguồn trong bài viết download về vọc nha

  6. #5
    nguoicodon's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    131
    Tuổi
    36
    Giới tính
    Bài gởi
    77
    Level: 32 [?]
    Experience: 411,834
    Next Level: 453,790
    Cảm ơn 0
    Cảm ơn 1 lần / 1 Bài viết

    Default

    Sorry nha, không thấy...đễ dơn về dùng thử xem...


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Trả lời: 1
    Bài mới gởi: 29-09-2014, 10:05 AM
  2. Trả lời: 0
    Bài mới gởi: 23-02-2014, 03:47 PM
  3. Chat Yahoo Online cùng Chat OLA trên dtdd
    By updated24h in forum Phần mềm
    Trả lời: 4
    Bài mới gởi: 14-03-2012, 10:42 PM
  4. Trả lời: 3
    Bài mới gởi: 10-08-2011, 09:56 AM
  5. Trả lời: 1
    Bài mới gởi: 29-08-2010, 11:36 AM

Tags for this Thread

Bookmarks

Quuyền Hạn Của Bạn

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể chỉnh sửa bài viết
  •