これは、ユーザーに文字列を入力してサーバーに送信するように求めるクライアント側です。
//send
printf("\nPlaintext : ");
gets(send_data);
send(sock,send_data,strlen(send_data), 0);
//recv
bytes_recieved = recv(sock, recv_data, 1024, 0);
recv_data[bytes_recieved] = '\0';
printf("\nEnciphered text = %s " , recv_data);
fflush(stdout);
close(sock);
そしてこれがサーバー側です。
sin_size = sizeof(struct sockaddr_in);
//accept
connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);
printf("\n I got a connection from (%s , %d)", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
//recv
bytes_recieved = recv(connected, recv_data, 1024,0);
recv_data[bytes_recieved] = '\0';
printf("\n RECIEVED DATA = %s " , recv_data);
cod = encipher(recv_data, key, 1); //printf("Code: %s\n", cod);
dec = encipher(cod, key, 0); //printf("Back: %s\n", dec);
//send
send(connected, cod, strlen(cod), 0);
send(connected, dec, strlen(dec), 0);
つまり、クライアントから 'plaintext' と 'key' という名前の 2 つの文字列を送信したいということです。サーバー側では、2 つの文字列を受け取り、encipher() 関数で処理してから、クライアントに送り返すことを期待していました。
クライアントから 2 つの文字列を送信し、サーバーから 2 つの文字列を受信するにはどうすればよいですか?