Ellowkes,
Onderstaande functie leest 1 lijn invoer van een socket in. Het probleem is dat hij blockt totdat er daadwerkelijk input is. Is het mogelijk om een time-out in te stellen?
Onderstaande functie leest 1 lijn invoer van een socket in. Het probleem is dat hij blockt totdat er daadwerkelijk input is. Is het mogelijk om een time-out in te stellen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| bool SocketReadLine(SOCKET s) { vector<char> dataVector; char buffer; char *pChar; int result; printf("Receiving... "); bool bReceiving=true; int err; while (bReceiving) { if ( (result=recv(s,&buffer,1,0))!=SOCKET_ERROR ) { switch (buffer) { case '\n': // end of input pChar = new char[dataVector.size() + 1]; memset(pChar, 0, dataVector.size() + 1); for (int f = 0; f<dataVector.size(); f++) pChar[f] = dataVector[f]; printf("%s\n",pChar); bReceiving=false; break; default: // regular input dataVector.push_back(buffer); break; } } else { // socket error err = WSAGetLastError(); // Get a more detailed error printf("\nError: %d\n",err); return false; } } return true; } |
[ Voor 22% gewijzigd door Verwijderd op 27-02-2003 19:50 ]