我有一个侦听端口的C代码,但它正在侦听错误的端口.
这是在.h文件中定义的:
#define PHANTASIA_PORT 2101
Run Code Online (Sandbox Code Playgroud)
套接字:
int the_socket, error, on=1;
/* create a socket */
errno = 0;
if ((the_socket=socket(AF_INET, SOCK_STREAM, 0)) == -1) {
sprintf(error_msg,
"[0.0.0.0:?] Socket creation failed in Do_init_server_socket: %s\n",
strerror(errno));
Do_log_error(error_msg);
exit(SOCKET_CREATE_ERROR);
}
error = setsockopt(the_socket, SOL_SOCKET, SO_REUSEADDR,
(char *) &on, sizeof(on));
Run Code Online (Sandbox Code Playgroud)
这是它如何绑定:
/* set up the bind address */
bind_address.sin_family = AF_INET;
bind_address.sin_addr.s_addr = INADDR_ANY;
bind_address.sin_port = PHANTASIA_PORT;
/* bind to that socket */
error = bind(the_socket, (struct sockaddr *) &bind_address,
sizeof(bind_address));
error = listen(the_socket, SOMAXCONN);
Run Code Online (Sandbox Code Playgroud)
但是当它运行时,lsof报告:
phantasia 2400 root 4u IPv4 2024436 TCP *:13576 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
当我在定义中将端口更改为2100时,它反而听取了:
phantasia 2266 root 4u IPv4 2021315 TCP *:13320 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
这是一些旧代码,但在编译时没有任何警告或错误.也许有些事情在我脑海里浮现.我绑定时有一个调试日志,它报告它绑定到端口2101.