我有一些在Windows上编译的源代码.我正在将其转换为在Red Hat Linux上运行.
源代码包含<windows.h>头文件,程序员使用该Sleep()函数等待一段时间.这不适用于Linux.
但是,我可以使用该sleep(seconds)函数,但在几秒钟内使用整数.我不想将毫秒转换为秒.有没有替代睡眠功能,我可以在Linux上使用gcc编译?
我正在尝试调用select套接字,但我无法理解我做错了什么。
setup_server_socket调用bind和listen设置套接字为非阻塞模式。
以下代码select似乎阻塞了调用,而不是前进到FD_ISSET. 我尝试连接客户端,它似乎成功但select从未返回任何内容。
这样做的正确方法是什么?
...
int listenfd = setup_server_socket( serverPort );
if( -1 == listenfd )
return 1;
fd_set read_fds;
FD_ZERO(&read_fds);
int fdmax = listenfd;
// loop forever
while( 1 )
{
if (select(fdmax+1, &read_fds, NULL,NULL,NULL) == -1){
perror("select");
exit(4);
}
for (int i = 0; i<= fdmax; i++){
printf("Testing: %d, %d\n", i, FD_ISSET(i,&read_fds));
}return 0;
...
Run Code Online (Sandbox Code Playgroud)