Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Gửi, nhận dữ liệu giữa 2 máy tính mạng Lan => chạy ở cùng 1 máy thì được, mang sang 2 máy khác nhau thì không chạy

    Mình có tham khảo cái quyền sách trong topic này:
    Lập trình mạng với C#

    Mình có làm 1 cái ví dụ trong đó. Khi chạy cả 2 file cùng lúc ở máy của mình thì nó hoạt động tốt.
    Còn mang sang 2 máy khác nhau. (Nhưng cùng dùng chung mạng quán nét)
    Thì không thấy nó chạy j cả. Mà cũng không thấy báo lỗi. Chỉ thấy win báo gửi lỗi cho họ:
    Cả 2 máy mình đều dùng winXP, cài đủ .NET....


    Code của 2 file Sever và Client:
    Server:

    Mã:
    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets; namespace Code_Server{    class Program    {        static void Main(string[] args)        {            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);            Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);            server.Bind(iep);            server.Listen(10);            Console.WriteLine("Cho ket noi tu Client");            Socket client = server.Accept();            Console.WriteLine("Chap nhan ket noi tu:{0}", client.RemoteEndPoint.ToString());            string s = "Chao ban den noi sever";            //chuyen chuoi s thanh dang byte            byte[] data = new byte[1024];            data = Encoding.ASCII.GetBytes(s);            //Gui nhan du lieu theo phuong thuc da thiet ke            client.Send(data, data.Length, SocketFlags.None);            while (true)            {                data = new byte[1024];                int recv = client.Receive(data);                if (recv == 0) break;                //chuyen mang byte Data thanh chuoi va in ra man hinh                s = Encoding.ASCII.GetString(data, 0, recv);                //Console.WriteLine("Client gui len:{0}", recv);                Console.WriteLine("Client:{0}", s);                //Neu nhan duoc chuoi Quit thi thoat                if (s.ToUpper().Equals("QUIT")) break;                //Gui tra lai cho client chuoi s                //s = s.ToUpper();                s = Console.ReadLine();                data = new byte[1024];                data = Encoding.ASCII.GetBytes(s);                client.Send(data, data.Length, SocketFlags.None);            }            client.Shutdown(SocketShutdown.Both);            client.Close();            server.Close();        }    }}
    Code Client:

    Mã:
    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets; namespace Code_Client{    class Program    {        static void Main(string[] args)        {            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            client.Connect(iep);            byte[] data = new byte[1024];            int recv = client.Receive(data);            string s = Encoding.ASCII.GetString(data, 0, recv);            Console.WriteLine("Server gui:{0}",s);            string input;            while (true)            {                input = Console.ReadLine();                //chuyen input thanh mang byte gui len sever                data = new byte[1024];                data = Encoding.ASCII.GetBytes(input);                client.Send(data, data.Length, SocketFlags.None);                if (input.ToUpper().Equals("QUIT")) break;                data = new byte[1024];                recv = client.Receive(data);                s = Encoding.ASCII.GetString(data, 0, recv);                Console.WriteLine("Sever gui:{0}", s);            }            client.Disconnect(true);            client.Close();        }    }}
    Mong mọi người góp ý hộ. Mình mới tìm hiểu vấn đề này. Có gì mong nhận được giúp đỡ!
    Mục đích của 2 code là chạy trên 2 máy tính trong mạng Lan mà nếu thế này thì ...[IMG]images/smilies/17.gif[/IMG]

    Trích dẫn Gửi bởi tauit_dnmd
    Nhìn lại cái địa chỉ IP kìa.Để vậy nó chạy trên 2 máy khác nhau mới là lạ.[IMG]images/smilies/Bring.gif[/IMG][IMG]images/smilies/Bring.gif[/IMG][IMG]images/smilies/Bring.gif[/IMG]
    Hj, thật ra mình chưa học cái môn Lập trình mạng, thấy cái topic có quyển sách lập trình mạng với c# hay quá nên ngồi đọc rùi làm theo ví dụ.
    Nghe bạn nói mình cũng chưa hiểu ra vấn đề [IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]
    Mong bạn cho cách giải quyết [IMG]images/smilies/smile.png[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vuthanhtrung90
    Mình có tham khảo cái quyền sách trong topic này:
    http://forums.congdongcviet.com/showthread.php?t=25639

    Mình có làm 1 cái ví dụ trong đó. Khi chạy cả 2 file cùng lúc ở máy của mình thì nó hoạt động tốt.
    Còn mang sang 2 máy khác nhau. (Nhưng cùng dùng chung mạng quán nét)
    Thì không thấy nó chạy j cả. Mà cũng không thấy báo lỗi. Chỉ thấy win báo gửi lỗi cho họ:
    Cả 2 máy mình đều dùng winXP, cài đủ .NET....


    Code của 2 file Sever và Client:
    Server:

    Mã:
    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets; namespace Code_Server{    class Program    {        static void Main(string[] args)        {            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);            Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);            server.Bind(iep);            server.Listen(10);            Console.WriteLine("Cho ket noi tu Client");            Socket client = server.Accept();            Console.WriteLine("Chap nhan ket noi tu:{0}", client.RemoteEndPoint.ToString());            string s = "Chao ban den noi sever";            //chuyen chuoi s thanh dang byte            byte[] data = new byte[1024];            data = Encoding.ASCII.GetBytes(s);            //Gui nhan du lieu theo phuong thuc da thiet ke            client.Send(data, data.Length, SocketFlags.None);            while (true)            {                data = new byte[1024];                int recv = client.Receive(data);                if (recv == 0) break;                //chuyen mang byte Data thanh chuoi va in ra man hinh                s = Encoding.ASCII.GetString(data, 0, recv);                //Console.WriteLine("Client gui len:{0}", recv);                Console.WriteLine("Client:{0}", s);                //Neu nhan duoc chuoi Quit thi thoat                if (s.ToUpper().Equals("QUIT")) break;                //Gui tra lai cho client chuoi s                //s = s.ToUpper();                s = Console.ReadLine();                data = new byte[1024];                data = Encoding.ASCII.GetBytes(s);                client.Send(data, data.Length, SocketFlags.None);            }            client.Shutdown(SocketShutdown.Both);            client.Close();            server.Close();        }    }}
    Code Client:

    Mã:
    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets; namespace Code_Client{    class Program    {        static void Main(string[] args)        {            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            client.Connect(iep);            byte[] data = new byte[1024];            int recv = client.Receive(data);            string s = Encoding.ASCII.GetString(data, 0, recv);            Console.WriteLine("Server gui:{0}",s);            string input;            while (true)            {                input = Console.ReadLine();                //chuyen input thanh mang byte gui len sever                data = new byte[1024];                data = Encoding.ASCII.GetBytes(input);                client.Send(data, data.Length, SocketFlags.None);                if (input.ToUpper().Equals("QUIT")) break;                data = new byte[1024];                recv = client.Receive(data);                s = Encoding.ASCII.GetString(data, 0, recv);                Console.WriteLine("Sever gui:{0}", s);            }            client.Disconnect(true);            client.Close();        }    }}
    Mong mọi người góp ý hộ.
    Mục đích của 2 code là chạy trên 2 máy tính trong mạng Lan mà nếu thế này thì ...[IMG]images/smilies/17.gif[/IMG]
    Nhìn lại cái địa chỉ IP kìa.Để vậy nó chạy trên 2 máy khác nhau mới là lạ.[IMG]images/smilies/Bring.gif[/IMG][IMG]images/smilies/Bring.gif[/IMG][IMG]images/smilies/Bring.gif[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    127.0.0.1 là thay cho cái localhost khi chạy trên 2 máy thì bạn phải thay địa chỉ gửi request của client .Cách lấy thì bạn trên đã nói rồi đấy, mở cmd rồi gõ ipconfig/all.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi haovq00417
    127.0.0.1 là thay cho cái localhost khi chạy trên 2 máy thì bạn phải thay địa chỉ gửi request của client .Cách lấy thì bạn trên đã nói rồi đấy, mở cmd rồi gõ ipconfig/all.
    uhm ,cảm ơn bạn.
    Trong sách nó cho ví dụ thế nên mình cũng mới biết đến thế thôi!
    Để mình xem thêm đã!

    Cám ơn các bạn: @haovq00417, @OWickedFox, @r3z0lee, @tauit_dnmd đã cho gợi ý.
    Mình đã sửa lại được rùi!
    Thay IPAddress bằng địa chỉ của máy dùng làm server!
    [Cái tội không đọc lý thuyết [IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]]

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn xem Ip của server cũng là IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);
    client cũng là : IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);
    chạy trên 2 máy khác nhau thì bạn phải đổi lại ip chứ!

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi r3z0lee
    bạn xem Ip của server cũng là IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);
    client cũng là : IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2008);
    chạy trên 2 máy khác nhau thì bạn phải đổi lại ip chứ!
    Cảm ơn bạn đã cho ý kiến nhưng mờ mình đổi 1 cái lại là 127.0.0.1 và 1 cái là 127.0.0.2 thì nó vẫn không chạy được bạn à! [IMG]images/smilies/offline.gif[/IMG]

    Up cái![IMG]images/smilies/tongue.png[/IMG]
    Nội quy diễn đàn là sau 72h mới được up [IMG]images/smilies/biggrin.png[/IMG] (bây giờ mới được 12h, nhưng đã bị qua trang 2 rùi)
    Em biết em sai nhưng .... [IMG]images/smilies/clap_grin.gif[/IMG][IMG]images/smilies/clap_grin.gif[/IMG]

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vuthanhtrung90
    Cảm ơn bạn đã cho ý kiến nhưng mờ mình đổi 1 cái lại là 127.0.0.1 và 1 cái là 127.0.0.2 thì nó vẫn không chạy được bạn à! [IMG]images/smilies/offline.gif[/IMG]
    Xin lỗi, nhưng câu bạn nói làm mình buồn cười nhất từ khi vào CViet =)) =)) Nghe nói bạn đã từng viết Auto nvtt gì gì ở wap mà

    • Bạn tìm hiểu 127.0.0.1 là địa chỉ gì?Địa chỉ IP của máy là gì?Cách xem địa chỉ IP của máy?lệnh ipconfig trong DOS

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn xem cái ví dụ này là biết ah`, khi kết nối thì client sẽ nhập ip máy chủ.

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn xem thêm ví dụ này là biết ah`, khi kết nối thì client sẽ nhập ip máy chủ

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vuthanhtrung90
    Cám ơn các bạn: @haovq00417, @OWickedFox, @r3z0lee, @tauit_dnmd đã cho gợi ý.
    Mình đã sửa lại được rùi!
    Thay IPAddress bằng địa chỉ của máy dùng làm server!
    [Cái tội không đọc lý thuyết [IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]]
    để tự động bạn có thể cho scan trong dải IP của mạng lan để tự tìm ra IP server như vậy hay hơn

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •