Bài tập C# - SocketTCP - Chat qua lại giữa Client và Server.

Thảo luận trong 'C#' bắt đầu bởi sunboy, 23 Tháng mười hai 2010.

  1. Offline

    sunboy

    • Thành viên sáng lập

    • No thing
    Số bài viết:
    1.616
    Đã được thích:
    1.340
    Điểm thành tích:
    1.000
    SocketTCP - Chat qua lại giữa Client và Server.
    Chạy trên cùng một máy nhé. Nếu 2 mấy tình chỉnh IPEnpoint lại.
    Trên client gõ date để server trả về ngày tháng năm.
    byby để thoát server và client

    Server:

    Mã:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    
    namespace SocketServer
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("------------------------Server-----------------------------");
                Console.WriteLine("            Chuong trinh chat 2 may voi nhau               ");
                Console.WriteLine(" Luu y: 1 ben goi va ben kia phai tra loi moi goi tiep duoc");
                Console.WriteLine("-----------------------------------------------------------");
                Console.WriteLine("---------------------Sunboy--2mit.org----------------------");
                //tao soc ket
                IPEndPoint ipserver = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5302);
                Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                //bind
                server.Bind(ipserver);
                //listen
                server.Listen(10);
                Console.WriteLine("Chuan bi ket noi!");
                Socket client = server.Accept();
                Console.WriteLine("Chap nhan ket noi tu: {0}",client.RemoteEndPoint.ToString());
               // string s;
                byte[] data = new byte[1024];
                string s = "Ket noi thanh cong den Server. Bat dau chat";
                //Chuyen chuoi s thanh mang byte 
               //byte[] data = new byte[1024];
                data = Encoding.ASCII.GetBytes(s);
                client.Send(data,data.Length,SocketFlags.None);
                string input;
                while (true)
                {
                    data = new byte[1024];
                    int nhan = client.Receive(data);
    
              
                    s = Encoding.ASCII.GetString(data,0,nhan);
                    if (s.Equals("byby"))
                        break;
                    Console.WriteLine("Client: {0}",s);
                    input = Console.ReadLine();
                    data = new byte[1024];
                    data = Encoding.ASCII.GetBytes(input);
                    client.Send(data, data.Length, SocketFlags.None);      
                }
                client.Shutdown(SocketShutdown.Both);
                client.Close();
                server.Close();
            }
        }
    }
    
    Client:
    Mã:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    
    namespace SocketClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("-------------------------Client------------------------");
                Console.WriteLine("            Chuong trinh chat 2 may voi nhau               ");
                Console.WriteLine(" Luu y: 1 ben goi va ben kia phai tra loi moi goi tiep duoc");
                Console.WriteLine("-----------------------------------------------------------");
                Console.WriteLine("---------------------Sunboy--2mit.org----------------------");
                //int a;
                //int p;
                IPEndPoint ipenpointclient = new IPEndPoint(IPAddress.Parse("127.0.0.1"),5302);
                //IPEndPoint ipenpointclient = new IPEndPoint(a, 5302);
                //Console.WriteLine("Moi nhap ip server: ");
               //Console.ReadLine(IPAddress.Parse(a));
                Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                client.Connect(ipenpointclient);
                byte[] data = new byte[1024];
               int nhan = client.Receive(data);
              // data = "Chao client";
                string s = Encoding.ASCII.GetString(data,0,nhan);
                Console.WriteLine(s);
                string input;
               string ngay;
                while (true)
                {   
                    input = Console.ReadLine();
                    data = new byte[1024];
                    data = Encoding.ASCII.GetBytes(input);
                    client.Send(data,data.Length,SocketFlags.None);
    
                    data = new byte[1024];
                    nhan = client.Receive(data);  
                     s = Encoding.ASCII.GetString(data, 0, nhan);
                     if (s.Equals("getdate"))
                     {
                         input = DateTime.Now.ToString("dd/MM/yyyy");
                         data = new byte[1024];
                         data = Encoding.ASCII.GetBytes(input);
                         client.Send(data, data.Length, SocketFlags.None);
                     } if (s.Equals("byby") || input.Equals("byby"))
                         break;
                     Console.WriteLine("Server: {0}",s);
                    
                }
                client.Disconnect(true);
                client.Close();
            }
        }
    }
    
    knight9000congthangitvn thích bài này.
  2. Offline

    lt_forever

    • Windows 95

    Số bài viết:
    238
    Đã được thích:
    99
    Điểm thành tích:
    90
    sao nó không cho gửi thông điệp
  3. Offline

    sunboy

    • Thành viên sáng lập

    • No thing
    Số bài viết:
    1.616
    Đã được thích:
    1.340
    Điểm thành tích:
    1.000
    Bình thường mà. Tớ với Trutra mới chát thử với nhau xong...

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí