J
Meine damit, dass wenn ich einmal Daten gesendet und empfangen habe das Programm in die while-Schleife gehen kann.
...
t.tv_sec = 1;
t.tv_usec = 0;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD (1, 1);
if (WSAStartup (wVersionRequested, &wsaData) != 0){
printf( "Fehler beim Initialisieren von Winsock");
}
else{
printf("Winsock initialisiert\n");
}
sock = socket( AF_INET, SOCK_STREAM, 0 );
if ( sock < 0 ){
printf("Fehler beim erzeugen des Sockets.\n");
}
else{
printf("Socket konnte erzeugt werden.\n");
}
memset( &server, 0, sizeof( server ) );
addr = inet_addr( "192.168.1.234" );
memcpy( (char *)&server.sin_addr, &addr, sizeof( addr ) );
server.sin_family = AF_INET;
server.sin_port = htons( PORT );
result = connect( sock, (struct sockaddr*)&server, sizeof( server ) );
if ( result < 0 ){
printf("Verbindung kann nicht hergestellt werden.\n");
printf("Fehler: %i\n", WSAGetLastError());
}
else{
printf("Verbindung konnte hergestellt werden.\n");
}
strcpy(data, "First Connetcion...");
data_len = strlen( data );
result = send( sock, data, data_len, 0 );
printf("'recv()- Funktion:\nWarten auf einkommende Daten.\n");
if ( (recv_size = recv( sock, echo_buffer, RCVBUFSIZE, 0 ) ) == 0 ){
printf("Verbindung abgebaut.\n");
system("PAUSE");
}
else if ( recv_size < 0 ){
printf("Fehler beim Empfangen der Daten.\n");
printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
}
else{
echo_buffer[recv_size] = '\0';
printf("Bearbeite Server mit der Adresse: %s\n", inet_ntoa( server.sin_addr ) );
printf("Nachrichten vom Server: %s \n\n\n", echo_buffer);
}
while ( recv_size > 0 ){
printf("FD_ZERO.\n");
FD_ZERO(&readfds);
printf("FD_SET.\n");
FD_SET(sock, &readfds);
printf("max_socket = fd_listen+1;.\n");
max_socket = sock+1;
...
Nach dem ein erster Datenaustausch statt gefunden hat, funktioniert die select-Fkt.