Select Receive Calls Irregularity?
Select Receive Calls Irregularity?
- Subject: Select Receive Calls Irregularity?
- From: "Nelson Lee" <email@hidden>
- Date: Thu, 20 Sep 2007 18:10:34 -0700
I have an application that reads data from a socket. The data is perpetually written to the socket so I am fairly certain that it is the receive call that's causing the delays.
From timing debugging output, the recvfrom call returns after ~1ms. However, occasionally, there is a call that takes 10 ms. Is this a bug in select?
Code as follows:
fd_set set;
FD_ZERO(&set);
FD_SET(m_socket, &set);
struct timeval time;
time.tv_sec = 0;
// time.tv_usec = timeout;
time.tv_usec
= timeout;
int s = m_socket + 1;
if (select(s, &set, 0, 0, &time) <= 0) {
return 0;
}
if (!FD_ISSET(m_socket, &set)) {
return 0;
}
struct sockaddr_in serverAddress;
size_t serverAddressLen = sizeof(serverAddress);
struct sockaddr_in *serverAddressPtr;
size_t *serverAddressLenPtr;
if (inOutServerAddress) {
serverAddressPtr = inOutServerAddress;
serverAddressLenPtr = inOutServerAddressLen;
}
else {
serverAddressPtr = &serverAddress;
serverAddressLenPtr = &serverAddressLen;
}
size_t receivedLen = recvfrom(m_socket, // our socket
data, // Receiving buffer
dataLen, // Max receiving buffer size
0, // Flags: no options
(struct sockaddr *)serverAddressPtr, // Address of the sender (correct endian)
(socklen_t*) serverAddressLenPtr); // Address length
if (receivedLen == -1) {
static int s_oneOnly = 0;
if (s_oneOnly != errno) {
ERROR_MESSAGE(strerror(errno));
s_oneOnly = errno;
}
return(0);
}
return receivedLen;
Thanks,
-n
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden