2015-04-19 17 views
15

Cách tạo kết nối TCP bằng cách sử dụng nc để nghe nhiều máy chủ?Cách nghe nhiều kết nối tcp bằng cách sử dụng nc

nc -l -p 12345 
+1

bạn có thể muốn làm rõ liệu bạn đang tìm cách tạo nhiều kết nối TCP ** đến ** 'nc' (ví dụ từ một loạt các ứng dụng khách khác) hay bạn muốn nghe ** trên ** nhiều địa chỉ TCP/IP thay vì nghe trên một và làm cho tiêu đề và văn bản tuân thủ –

+1

@HansZ. nhiều kết nối tcp, do đó nhiều khách hàng kết nối với một ổ cắm duy nhất. –

Trả lời

11

Không thể kết nối đồng thời với netcat. Bạn nên sử dụng một công cụ như công cụ 's tcpserver hoặc đòn bẩy xinetd kể từ khi bạn sử dụng Linux.

Xem: https://superuser.com/questions/232747/netcat-as-a-multithread-server

kết nối liên tiếp có thể được xử lý thông qua một kịch bản shell đó khởi động lại netcat sau khi nó kết thúc.

+1

nc -k sẽ xử lý các kết nối đến khi kết thúc trước đó và vẫn có thể chấp nhận kết nối thứ hai trong khi xử lý kết nối đầu tiên. – wizulus

3

-k
Buộc phải nghe kết nối khác sau khi kết nối hiện tại hoàn tất. Đó là lỗi khi sử dụng tùy chọn này mà không có tùy chọn -l.

+1

Điều này không trả lời câu hỏi của OP. Họ muốn có thể nghe hai hoặc nhiều kết nối cùng một lúc, không phải cho các kết nối back-to-back. –

+0

Vâng, và nó hoạt động chính xác theo yêu cầu. Khi kết nối đầu tiên được đóng, nó sẽ in các gói dữ liệu từ gói tiếp theo. Nếu không, bạn sẽ nhận được một mớ hỗn độn với dữ liệu từ các kết nối khác nhau. – excitoon

+1

Đây phải là câu trả lời được chấp nhận. Với -k, netcat sẽ chấp nhận nhiều kết nối, nhưng sẽ chỉ xử lý chúng một lần. Đây là câu trả lời chính xác mà tôi đang tìm kiếm khi tôi truy cập trang này. – wizulus

3

Tôi khuyên bạn nên socat làm nc thay thế.

Đối với sự cố của OP, socat - TCP-LISTEN:12345,fork có thể thực hiện công việc.

3

ncat có thể làm điều đó.

Ví dụ: ncat --broker --listen -p 12345 sẽ phân phối tất cả các tin nhắn đến cho tất cả các khách hàng khác (nghĩ về nó như một trung tâm).

Các vấn đề liên quan