Hello to everyone,
I'm trying to run two UDP server using the function select().
Here is the code, further information follows below:
Intention is to send messages to the first socket, which works fine.Code:int main(void) { int port1 = 1234; int port2 = 1322; fd_set read; const int buf = 1024; char data[buf]; char data_2[buf]; long size; int ret; int max_socket_number; ConnLessServer testServer1(port1); //first server is opened with given port ConnLessServer testServer2(port2); //second server is opened with given port FD_ZERO(&read); FD_SET(testServer1.getSocket(), &read); //returns the socket filedeskriptor FD_SET(testServer2.getSocket(), &read); fd_vector.push_back(testServer1.getSocket()); fd_vector.push_back(testServer2.getSocket()); max_socket_number = *max_element(fd_vector.begin(), fd_vector.end()); do { ret = select(max_socket_number + 1, &read, NULL, NULL, NULL); std::cout << std::endl << ret << std::endl; if(FD_ISSET(testServer1.getSocket(), &read)) { testServer1.receive(data, size, buf); fprintf(stdout, "Server 1: %ld %s\n", size, data); } if(FD_ISSET(testServer2.getSocket(), &read)) { testServer2.receive(data_2, size, buf); fprintf(stdout, "Server 2: %ld %s\n", size, data_2); } } while (0 != strcmp(data_2, "quit")); testServer1.close(); testServer2.close(); return 0; }
The second socket is intented to receive one message, after which the "do-while"-loop should be left.
Problem is, that the second message doesn't seem to be recognized and the message "quit" is ignored. Using a debugger, everything seems to work fine, "quit" is received and the loop is left.
In case, more information is needed, I can post some code of the member functions, I wrote myself (e.g. for the class ConnLessServer).
Best regards,
PiJ.



LinkBack URL
About LinkBacks




.