当前位置: 技术问答>linux和unix
linux下socket tcp客户端读取数据
来源: 互联网 发布时间:2017-01-16
本文导语: 这是《UNIX网络编程》里的一段代码,用来读取数据, 我用的时候因为不知道将要接受的数据的大小,所以通常定义一个比较大的数组,如: char buffer[1024] = {0}; SocketClass.readn(buffer, 1024); 但是有个问题,当read(m_sock...
这是《UNIX网络编程》里的一段代码,用来读取数据,
我用的时候因为不知道将要接受的数据的大小,所以通常定义一个比较大的数组,如:
char buffer[1024] = {0};
SocketClass.readn(buffer, 1024);
但是有个问题,当read(m_socket, ptr, nleft)数据已经获取完了,下次再读的时候由于服务器那边没有数据过来就会阻塞,怎么解决啊.
不知道说清楚没有,
如:
服务器发送过来的数据只有100个字节,那么当我read完这个100个字节后,while循环还没有退出会继续read,
这时候read当然就没有数据了,但是会阻塞,不知道怎么解决好呢?
我用的时候因为不知道将要接受的数据的大小,所以通常定义一个比较大的数组,如:
char buffer[1024] = {0};
SocketClass.readn(buffer, 1024);
但是有个问题,当read(m_socket, ptr, nleft)数据已经获取完了,下次再读的时候由于服务器那边没有数据过来就会阻塞,怎么解决啊.
不知道说清楚没有,
如:
服务器发送过来的数据只有100个字节,那么当我read完这个100个字节后,while循环还没有退出会继续read,
这时候read当然就没有数据了,但是会阻塞,不知道怎么解决好呢?
int readn(void *vptr, int n)
{
int nleft;
int nread;
char *ptr;
ptr = vptr;
nleft = n;
while (nleft > 0)
{
if ((nread = read(m_socket, ptr, nleft))