我使用此代码从C客户端中的Java服务器接收字符串。

if( recv( to_server_socket, &reply, sizeof( reply ), MSG_WAITALL ) != sizeof( reply ) )
{
    printf( "socket read failed");
    exit( -1 );
}

printf( "got reply: %d\n", ntohl( reply ) );

char buf[512];
ssize_t nbytes=0;
int byte_count;

byte_count = recv(to_server_socket, buf, sizeof buf, 0);
printf("recv()'d %d bytes of data in buf\n", byte_count);
buf[byte_count] = '\0';

printf("String : %s\n",buf);

例如,当Java服务器发送此字符串时



我得到了这个结果



所以我收到了16个字节,但是
printf("String : %s",buf);

什么都不给我

服务器发送了这个字符串



我尝试了这段代码
   int i=0;
    while(i<byte_count){
        printf("String : %c\n",buf[i]);
        i++;  recv()'d 17 bytes of data in buf

结果我有

最佳答案

您确定您的字符可以打印吗?

使用类似这样的东西来看看您收到了什么:

for (int i = 0; i < byte_count; i++)
{
    printf("%02x ", (unsigned int) buf[i]);
}
printf("\n");  // flush stdout

关于c - 收到套接字c字节,但我无法打印字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16374847/

10-13 22:35