调用read函数读取socket流时,为何返回值总是1
最近在Linux下面用Socket写一个httpclient,主要代码如下:
int sockfd = createtcpsocket(AF_INET);
struct sockaddr addr;
createsockaddr(ip, 80, &addr); //帮定到目标机器80端口
int status = connect(sockfd, &addr, sizeof(addr)); //连接
if(status == 0)
{
cout << "Connect to " << hoststr << "(" << ipstr << ")\n" << request << endl;
int n =write(sockfd, request.c_str(), request.length());
assert(n == request.length());
char buffer[1024];
n = 0;
string message;
while(n = read(sockfd, buffer, 1023) > 0)
{
//buffer[n] = '\0';
cout << n << endl; //在调试的时候,这里n总是1,但是实际buffer中的数据却已经读满了,不知道为何?
message.append(buffer, 1023);
}
在实际运行过程中,发现是能够成功获取服务器断返回的httpresponse信息,但是read函数每次均返回1,可是实际每次成功读取字符数并不是1,
请大侠赐教
谢谢