Linux上的unix netcat实用程序,检查是否已建立连接

时间:2012-09-10 07:21:22

标签: linux sockets netcat

我在linux上使用netcat实用程序从Windows机器上的程序接收输出。我的问题是Windows机器上的程序并不总是提供输出。

如何检查是否已与netcat建立连接?

我到目前为止所做的是“nc -l -v 9103 > output”然后我检查输出的大小,这会带来的问题是netcat只在达到某个缓冲区大小后才写入文件或新行char遇到了,所以有些情况通过连接已经确定文件大小被检测为零。

如何检查是否有人与netcat建立了连接。

我尝试使用

nc -l -v -e someprog.exe 9103 > output

但我的netcat似乎不支持这个

以下是我的选项

    $ nc -h
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
        Command Summary:
                -4              Use IPv4
                -6              Use IPv6
                -D              Enable the debug socket option
                -d              Detach from stdin
                -h              This help text
                -i secs         Delay interval for lines sent, ports scanned
                -k              Keep inbound sockets open for multiple connects
                -l              Listen mode, for inbound connects
                -n              Suppress name/port resolutions
                -p port         Specify local port for remote connects
                -r              Randomize remote ports
                -s addr         Local source address
                -T ToS          Set IP Type of Service
                -C              Send CRLF as line-ending
                -t              Answer TELNET negotiation
                -U              Use UNIX domain socket
                -u              UDP mode
                -v              Verbose
                -w secs         Timeout for connects and final net reads
                -X proto        Proxy protocol: "4", "5" (SOCKS) or "connect"
                -x addr[:port]  Specify proxy address and port
                -z              Zero-I/O mode [used for scanning]
        Port numbers can be individual or ranges: lo-hi [inclusive]

2 个答案:

答案 0 :(得分:1)

详细模式会写连接到stderr,你可以将stderr重定向到一个文件,详细日志有类似的东西 从[xxxx]

连接到[xxx]

尝试

nc -l -v -p 9103 -k 1> output 2>connect.log

并监视connect.log的连接性

如果你不使用-k,netcat在第一次连接后退出。

答案 1 :(得分:1)

如果您可以升级netcat的副本:现代版本(1.10,对于一个)可以选择在连接时执行程序(或shell命令)。否则,您可以使netcat认为它在终端中运行(禁用缓冲stdout),例如使用script(它只保存给定文件中stdin / stdout / stderr上的所有内容)。或使用screentmux的记录功能。