我试图在C中编写服务器 - 客户端套接字程序。我对如何使用计时器实现它有疑问。我要做的是在服务器和客户端之间建立连接并进行读写操作。我开始知道在服务器端使用带有'timeval'结构的select()。但是我应该在客户端做什么,我可以在一个插座上读一段固定的时间。
答案 0 :(得分:0)
您可以在客户端执行完全相同的操作,在select()
系统调用的timeval
结构中设置所需的超时。但在客户端中,使用阻塞模式更容易,并使用setsockopt()
和SO_TIMEOUT/SO_RCVTIMEO
选项,无论在您的平台上调用它,都可以控制超时。检查相关的 man 页面。
答案 1 :(得分: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));