客户端在TCP模式下的连接应运行connect()
api。
在客户端(nc
)下面以UDP模式(-u
)连接,但是strace
在下面显示了connect()
呼叫,
[root@machine ~]# uname -a
Linux machine 3.10.0-862.3.2.el7.x86_64 #1 SMP Tue May 15 18:22:15 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@machine ~]# lsof -i udp | grep rsyslog
rsyslogd 556023 root 19u IPv4 74002548 0t0 UDP *:52246
[root@machine ~]# strace nc -u localhost 52246
execve("/bin/nc", ["nc", "-u", "localhost", "52246"], [/* 17 vars */]) = 0
:
:
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(52246), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
select(4, [3], [3], [3], NULL) = 1 (out [3])
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
select(4, [0 3], [], [], NULL^Cstrace: Process 131125 detached
<detached ...>
为什么udp模式连接需要建立连接? nc
是坏客户吗?