以下に、サーバーコードとクライアントコードのコードセグメントを示します。クライアントは正常に受信された整数をサーバーに送信し、次に長さstr_lenの文字列をサーバーに送信します。サーバーでの2番目の読み取りは機能していません。ブロックされており、何も読み取っていません。クライアントを終了すると、サーバーは何も読み取っていないと出力します。なにが問題ですか?
//Server code
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
unsigned int *length = new unsigned int;
memcpy(length, buffer, sizeof(int));
cout << "Length : " << *length << endl;
int len = *length + 1;
char buffIn[len+1];
bzero(buffIn,len);
//ok msg?
n = read(newsockfd,buffIn,len);
if (n < 0) error("ERROR reading from socket");
cout << "value of n" << n << endl;
printf("Received : %s\n", buffIn);
//client method
void send(string req)
{
//Send string len
unsigned int str_len = req.length();
//str_len = 3000;
write(socketFd, &str_len, sizeof(str_len));
//Send string
const char *str_req = req.c_str();
printf("%s\n",str_req);
cout << "Str len is : " << strlen(str_req) << endl;
write(socketFd, str_req, strlen(str_req) + 1);
cout << "write done " << endl;
}