1
Cでソケットライブラリを調べようとしていますが、recvを使用してメッセージを読む際に問題が発生しています。サーバがメッセージを受け取ったとき、送信されたメッセージやバッファサイズ(> = 8である限り)にかかわらず、常に8文字を読み込むようです。Recvは一度に8文字しか取得できません
これに加えて、メッセージを連続して送信すると、最初のメッセージだけが通過し、リセット時間があり、ソケットが正しく閉じられないようになります。ここで
は私のサーバーのコードは、これまでのところです:
void main(void) {
printf("Starting Server...\n");
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server, client;
server.sin_family = AF_INET;
server.sin_port = htons(3030);
server.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sock, (const struct sockaddr*)&server, sizeof(server));
listen(sock, 5);
while (1) {
int cli_len = sizeof(client);
int client_socket = accept(sock, (struct sockaddr*)&client, &cli_len);
conn_made(client_socket);
}
}
int conn_made(int client) {
printf("Connection Made...\n");
char *buff = malloc(1024);
recv(client, buff, 1024, 0);
int i = 0;
for (i = 0; i < sizeof(buff); i++) {
printf("%d byte: %d\n", i, buff[i]);
}
}
を次のように私は私のコードを作った(私は私に、恥を知っている!)秒間の誤差を無視: 'ssize_tのmessage_length =のrecv(クライアント、バフ、1024、0 ); ... (i = 0; i
私のせいで、この解決策は実際にはうまくいきました。問題はクライアント側にありました。本当にありがとう! –