Итак, я пытаюсь выяснить библиотеку сокетов в 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] );
}
}