我使用此代码从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/