-
07-06-2011, 06:31 PM #1Junior Member
- 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(); } }}
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(); } }}
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]
Gửi bởi tauit_dnmd
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]View more random threads:
- Lỗi không hiển thị Datbase dagram sau khi kết nối csdl với sql sever :(
- Quay text của Label đi một góc nào đó như thế nào?
- Lấy giá trị dòng cuối cùng trong một truy vấn Select
- tại sao trong winform lệnh gõ bằng tay ko có tác dụng (VD lệnh: click vào button)
- textbox chỉ cho nhập số thực làm thế nào?
- Cách khóa "date and timcuaruar Window C#
- tạo Label động trên C# như thế nào?
- POST dữ liệu kiểu multipart/form-data dùng Httpwebrequest sau đăng nhập
- tìm kiếm trên danh sách sinh viên.
- lấy hết danh sách từ listbox đưa sang textbox
-
07-06-2011, 06:37 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vuthanhtrung90
-
08-06-2011, 09:11 AM #3Junior Member
- 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.
-
08-06-2011, 09:16 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi haovq00417
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]]
-
08-06-2011, 07:07 PM #5Junior Member
- 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ứ!
-
08-06-2011, 07:26 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi r3z0lee
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]
-
08-06-2011, 07:38 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vuthanhtrung90
- 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
-
09-06-2011, 05:58 PM #8Junior Member
- 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ủ.
-
09-06-2011, 06:02 PM #9Junior Member
- 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ủ
-
09-06-2011, 06:36 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vuthanhtrung90
Không chỉ là một biểu tượng của sự quyết tâm và lòng tự hào quốc gia, cột cờ inox ngoại trời còn là biểu tượng của sự chuyên nghiệp và đẳng cấp của một công ty hoặc tổ chức. Việc sử dụng chúng để...
Kiến trúc đẳng cấp với cột cờ inox...