Sie können hier eine bidirektionale Datenübertragung durchführen. Ich habe Ihren Code geändert, um das zu zeigen. Nun sendet der Server die gleiche Zeichenfolge, die er empfangen hat, an den Client zurück. Der Client zeigt jetzt dieselbe Zeichenfolge an, die er vom Server erhält. Pl. experimentiere damit.
Client-Hauptschleife
while(1) {
printf("Client: Enter Data for Server:\n");
fgets(buffer,MAXSIZE-1,stdin);
if ((send(socket_fd,buffer, strlen(buffer),0))== -1) {
fprintf(stderr, "Failure Sending Message\n");
close(socket_fd);
exit(1);
}
else {
printf("Client:Message being sent: %s\n",buffer);
num = recv(socket_fd, buffer, sizeof(buffer),0);
if ( num <= 0 )
{
printf("Either Connection Closed or Error\n");
//Break from the While
break;
}
buff[num] = '\0';
printf("Client:Message Received From Server - %s\n",buffer);
}
}
close(socket_fd);
}//End of main
Server-Hauptschleife
while(1) {
size = sizeof(struct sockaddr_in);
if ((client_fd = accept(socket_fd, (struct sockaddr *)&dest, &size))==-1 ) {
perror("accept");
exit(1);
}
printf("Server got connection from client %s\n", inet_ntoa(dest.sin_addr));
while(1) {
if ((num = recv(client_fd, buffer, 1024,0))== -1) {
perror("recv");
exit(1);
}
else if (num == 0) {
printf("Connection closed\n");
//So I can now wait for another client
break;
}
buffer[num] = '\0';
printf("Server:Msg Received %s\n", buffer);
if ((send(client_fd,buffer, strlen(buffer),0))== -1)
{
fprintf(stderr, "Failure Sending Message\n");
close(client_fd);
break;
}
printf("Server:Msg being sent: %s\nNumber of bytes sent: %d\n",b
uffer, strlen(buffer));
} //End of Inner While...
//Close Connection Socket
close(client_fd);
} //Outer While
close(socket_fd);
return 0;
} //End of main