Tôi đang cố gắng xây dựng một ứng dụng netowrk. Tôi đã thực hiện thành công một máy chủ gửi và nhận các gói. Cho đến nay, thử nghiệm đã được thực hiện trên một máy tính trỏ đến 127.0.0.1 (Không có nơi nào như nhà). Bây giờ tôi muốn chuyển sang mạng. Làm thế nào tôi có thể tìm thấy các máy tính trên mạng LAN đang nghe cổng cụ thể của tôi?Tìm cổng TCP đang mở trong một mạng
Trả lời
Dịch vụ sẽ cần nghe broadcast messages trên cổng đã biết (nếu bạn muốn thực sự cư xử tốt, bạn có thể register the program and port number with the IANA), khi nghe tin nhắn phát sóng, nó trả lời người gửi IP của máy chủ và dịch vụ cổng là gì lắng nghe các kết nối đến. Dưới đây là một ví dụ đơn giản từ liên kết ở trên, điều này chỉ in cho giao diện điều khiển đã kết nối và trên cổng nào, nhưng bạn có thể sử dụng thông tin này để thiết lập kết nối TCP hoặc UDP giữa hai điểm cuối. Quay lại đầu trang
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class RecvBroadcst
{
public static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
Console.WriteLine("Ready to receive…");
byte[] data = new byte[1024];
int recv = sock.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}",
stringData, ep.ToString());
data = new byte[1024];
recv = sock.ReceiveFrom(data, ref ep);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}",
stringData, ep.ToString());
sock.Close();
}
}
Như một ví dụ psudo đây là chuỗi các sự kiện trên thế nào tôi sẽ làm điều đó.
Ví dụ này cho phép nói rằng chúng tôi có mạng có IP là 192.168.1.0
và mạng con là 255.255.255.0
. Chúng tôi có hai máy chủ, Server1
tại 192.168.1.2
với dịch vụ nghe trên cổng 1234
và Server2
tại 192.168.1.3
với cổng 4567
cho dịch vụ. Cả hai đều được liệt kê trên cổng 3000
cho các tin nhắn quảng bá. Các khách hàng kết nối sẽ nằm ở IP 192.168.1.4
- Khách hàng chọn một cổng ngẫu nhiên trong dynamic port range (49.152-65.535) và liên kết với nó trên UDP (cảng 50.123 ví dụ này) và lắng nghe.
- Khách hàng phát sóng đến địa chỉ quảng bá và cổng đã biết cho mạng con cục bộ của mình (
192.168.1.255:3000
) bằng cùng một cổng để gửi khi đang nghe. Anh ta gửi một số loại tải trọng để các máy chủ chỉ gửi lại cho khách hàng của bạn, thay vì một người khác đã từng sử dụng cùng một cổng như bạn. (cho phép nói rằng nó sẽ gửi chuỗiSend me your info for XYZ app!
) - Server1 nhận được chương trình phát sóng. Kiểm tra xem thư có phải là
Send me your info for XYZ app!
và gửi thông báo UDPName:Server1 IP:192.168.1.2 Port:1234
quay lại cổng nguồn của người gửi và kết hợp IP (192.168.1.4:50123
) - Server2 cũng nhận được chương trình phát sóng. Kiểm tra xem thư có phải là
Send me your info for XYZ app!
và gửi thông báo UDPName:Server2 IP:192.168.1.3 Port:4567
trở lại cổng nguồn của người gửi và kết hợp IP (192.168.1.4:50123
) - Máy khách nhận được hai thư UDP trên cùng một cổng mà anh đã gửi thư. Ông phân tích các câu trả lời và hiển thị cho người dùng hai máy chủ có sẵn để kết nối.
- 1. mở cổng TCP bằng Python
- 2. Cổng mở trong Ubuntu
- 3. Đóng đúng cổng TCP
- 4. Truy cập cổng TCP và C++
- 5. ai sử dụng cổng TCP?
- 6. Giải phóng cổng TCP/IP?
- 7. Nghe trên TCP và UDP trên cùng một cổng
- 8. Bỏ phiếu qua hàng nghìn cổng TCP
- 9. Kiểm tra xem cổng có đang mở trong ANT
- 10. Cổng Erlang nào sử dụng cổng TCP để kết nối với một nút từ xa?
- 11. Số cổng mạng TCP/IP lớn nhất cho phép đối với IPv4 là bao nhiêu?
- 12. Phạm vi cổng được phép cho TCP
- 13. Ruby - Kiểm tra xem cổng có đang mở
- 14. Cách đóng kết nối TCP bằng cổng?
- 15. Đóng ổ cắm TCP đang nghe trong C
- 16. Framework mạng cho C++ (UDP hoặc TCP)?
- 17. chuyển cấu trúc qua cổng TCP (SOCK_STREAM) trong C
- 18. Perl: cách cổng dự trữ cổng TCP (do đó sẽ có một URL không có sẵn)
- 19. Tìm một cổng miễn phí
- 20. Tìm số cổng hiện đang kết nối SSH
- 21. Tìm hiểu ai đang khóa tệp trên mạng chia sẻ
- 22. Làm thế nào để kiểm tra xem một cổng nào đó đang mở và chưa sử dụng?
- 23. Mở cổng HTTP trên Amazon EC2
- 24. clojure swank server mở cổng công cộng?
- 25. Cách quét cổng chờ kết nối trên mạng
- 26. Mở cổng bộ định tuyến bằng UPnP trong Ruby
- 27. nmap cho biết cổng được đóng trong khi Nestat cho biết đang nghe
- 28. Gửi tệp đến Cổng động theo Giao thức TCP
- 29. Cách tìm con trỏ đang mở hiện tại trong Oracle
- 30. Tìm biểu mẫu đang mở trong ứng dụng C# windows
Cho ip của máy đó thay vì 127.0.0.1 – Adil
Bạn chỉ quan tâm đến mạng con hoặc bạn có muốn kiểm tra các máy tính khả dụng có thể có trong mạng con khác không? –
Vâng, nhưng câu hỏi của tôi là tìm các cổng thực tế. Bằng cách đó tôi có thể sử dụng nó mà không cần mã hóa IP của – Samyn