Recv一次只能获取8个字符

Recv一次只能获取8个字符,c,sockets,networking,C,Sockets,Networking,所以,我试图找出C中的套接字库,但在使用recv读取消息时遇到了问题。服务器接收到消息时,似乎总是读取8个字符,而不管发送的消息或缓冲区大小(只要>=8) 最重要的是,快速连续地发送消息使得只有第一条消息才能通过,是否有重置时间,并且我不正确地关闭了套接字 以下是迄今为止我的服务器代码: void main( void ) { printf( "Starting Server...\n" ); int sock = socket( AF_INET, SOCK_STREAM, 0 );

所以,我试图找出C中的套接字库,但在使用recv读取消息时遇到了问题。服务器接收到消息时,似乎总是读取8个字符,而不管发送的消息或缓冲区大小(只要>=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] );
  }
}
void主管道(void){
printf(“正在启动服务器…\n”);
intsock=socket(AF_INET,sock_STREAM,0);
服务器、客户端中的结构sockaddr_;
server.sinu family=AF\u INET;
server.sin_port=htons(3030);
server.sin_addr.s_addr=htonl(INADDR_ANY);
绑定(sock,(const struct sockaddr*)&server,sizeof(server));
听(短袜,5);
而(1){
int cli_len=sizeof(客户端);
int client_socket=accept(sock,(struct sockaddr*)和client,&cli_len);
连接件(客户机插座);
}
}
内部连接(内部客户端){
printf(“建立连接…\n”);
char*buff=malloc(1024);
recv(客户端,buff,1024,0);
int i=0;
对于(i=0;i

忽略错误一秒钟(我知道,我真丢脸!)我的代码如下:`ssize_t message_length=recv(client,buff,1024,0)。。。对于(i=0;ifor ( i = 0; i < sizeof( buff ); i++ ) { printf( "%d byte: %d\n", i, buff[i] ); }
ssize_t sz;
sz = recv(client, buff, 1024, 0);
if (sz < 0) {
    perror("recv");
    return -1;
}

for (i = 0; i < sz; i++)
    printf("%d byte: %d\n", i, buff[i]);