今天做socket通信,突然出了一个怪异的问题。之前都是一样的语句却都没有出现过这样的问题服务器端 语句
char buffer[1000];
buffer=fun();
//buffer 调用函数后的结果是 “350 \r\n\0”
send(socketa,buffer,1000,0)客户端 语句:
char buffer1[4000];
recv(socketb,buffer1,4000,0);调试的时候发现,客户端接受的字符串 “350 \r\n\0”却出现在了buffer1的第900个元素位置。也就是buffer[900]='3'.....
但是之前都是这么写的,接收到的字符串都是在接收数组的最前面啊?这样的问题应该怎么解决啊?非常奇怪!
char buffer[1000];
buffer=fun();
//buffer 调用函数后的结果是 “350 \r\n\0”
send(socketa,buffer,1000,0)客户端 语句:
char buffer1[4000];
recv(socketb,buffer1,4000,0);调试的时候发现,客户端接受的字符串 “350 \r\n\0”却出现在了buffer1的第900个元素位置。也就是buffer[900]='3'.....
但是之前都是这么写的,接收到的字符串都是在接收数组的最前面啊?这样的问题应该怎么解决啊?非常奇怪!
先memset等把buffer1清零
c端和s端的缓冲区在每次接收时都清0。
服务器端 语句
char buffer[1000];
buffer=fun();
//buffer 调用函数后的结果是 “350 \r\n\0”
send(socketa,buffer,1000,0) ”buffer最前面是什么内容?“350 \r\n” 是buffer最前面的还是最后面的内容?你确定要把buffer中的内容全部发出去吗(发1000字节)?
客户端代码那里按理说不清也应该没事才对。
buffer=fun();
这写法错误,是简化了的代码么应该是fun(buffer)的形式吧
UP
//buffer 调用函数后的结果是 “350 \r\n\0”
那为啥还要发送1000个?2. 服务器端是否在其它地方有发送其它的数据?3. 在客户端,是否有处理接收一半数据的情况?
================
这句啥意思?