我是套接字编程的新手。需要将多个字符串逐个发送到服务器并收集生成的字符串。
现在问题是在客户端使用发送/写入功能,所有字符串都从服务器一次读取。
//client.c
sendString(serversocket,"str1");
sendString(serversocket,"str2");
sendString(serversocket,"str3");
//server.c
char *buff=readstring(clientsocket);
printf("%s",buff) ;//output : str1str2str2
需要获得str1
,str2
和str3
...
我需要一个接一个地接收它。我怎样才能做到这一点?任何帮助将不胜感激。
答案 0 :(得分:3)
TCP套接字是字节流 - 您必须在接收端拆分数据。
对于字符串,您可以在例如这两种方式之一:
客户端:
服务器:
或者,您可以使用0终止:
客户端:
服务器:
您必须在服务器端处理这两种情况:
recv()
recv()
答案 1 :(得分:0)
我假设你在这里使用TCP。在这种情况下,发送到套接字的任何内容都被视为流。因此,您必须在流中添加分隔符才能拆分字符串。您可以在每个字符串后发送换行符,然后解析输入以再次拆分行。
答案 2 :(得分:0)
由于TCP是字节流,因此您需要分隔您的数据片段,即逻辑数据包。在这种情况下,换行符'\ n'可能是最明显的选择,或者您可以使用空字符'\ 0'。
//client.c
sendString(serversocket,"str1\n");
sendString(serversocket,"str2\n");
sendString(serversocket,"str3\n");
然后,您可以使用类似strtok的内容将输入数据整理到其组件逻辑数据包中。