我试图用 C 编写一个服务器-客户端套接字程序。我有一个关于如何使用计时器实现它的问题。我要做的是在服务器和客户端之间建立连接并进行读写操作。我开始了解在服务器端使用带有“timeval”结构的 select()。但是我应该在客户端做什么,我可以在一个套接字上读取一段固定的时间。
问问题
668 次
2 回答
0
你可以在客户端做同样的事情,在select()
系统调用的timeval
结构中设置你想要的超时时间。但在客户端中,使用阻塞模式和使用setsockopt()
选项SO_TIMEOUT/SO_RCVTIMEO
(无论在您的平台上调用什么)来控制超时更容易。检查相关的手册页。
于 2012-09-14T07:43:36.567 回答
0
是的,如果您想要一个带有“setsockopt”的套接字的简短示例:
int mySocket;
struct timeval tv = {0, 0}; // Init to 0 (Or set directly with your values)
mySocket = socket(AF_INET, SOCK_STREAM, 0);
// Set the timeout (If you don't have set directly values)
tv.tv_sec = 10;
tv.tv_usec = 0;
// Set The Timeout On Socket RECV
setsockopt(mySocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval));
// Set The Timeout On Socket SEND
setsockopt(mySocket, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(struct timeval));
于 2012-09-14T18:23:10.000 回答