我想打开socket并读取前6个字节。
$data = stream_socket_recvfrom($stream, 6);
但是如果客户端发送空字节,则函数只读取数据的第一部分并停止读取。
{0x51, 0x01, 0x00, 0x11, 0x11, 0x11}
我只得到{0x51, 0x01}
在这种情况下如何读取所有6个字节?
谢谢
答案 0 :(得分:0)
抱歉,PHP中没有问题。 C ++上的客户端计算消息长度不正确:
std::ofstream outfile (collector,std::ofstream::binary);
char buffer[MAX];
int bytesread; //how much data was read? recv will return -1 on error
while(size)
{ //collect bytes
bytesread = recv(sock_CONNECTION,buffer,MAX>size?size:MAX,0);
// MAX>size?size:MAX is like a compact if-else: if (MAX>size){size}else{MAX}
if (bytesread < 0)
{
//handle error.
}
outfile.write (buffer,bytesread);
size -= bytesread; //decrease
std::cout<<"Transferring.."<<std::endl;
}
C ++的strlen在空字节上中断。