read 的两种情况,为什么第一中不阻塞,第二种阻塞?
/********************** 情况1 *************************/
#include
by vivian2086 - C/C++ - 2009-10-15 19:52:32 阅读(1240) 回复(3)
#include
服务器端应该是用.net写的 我客户端去读取数据 代码段1:[code]Bufferedreader in = new Bufferedreader(new InputStreamreader( socket.getInputStream())); int n = 0; while ((n = in.read()) > 0) { char c = (char)n; System.out.print((char) n); } System.out.println("end");[/code]代码段2:[code]DataInputStream in = new DataInputStream(socket.getInputStream()); byte[] buf = new byte[1024...
我希望一个在需要结束一个线程的时候, 能让它从阻塞read()处很快的返回。 怎么样做到这一点呢, 不能用pthread_cancel, read()返 回后做一点处理再正常的退出线程。
一直以为你和阻塞send一样,没完成任务,绝不回来。 没想到,你是这样容易满足,一个字节就能让你屁颠屁颠的回来,哪怕你的任务是1000,100,你和非阻塞的read 只有一个字节的区别而已。 难道是我误解了阻塞 read,我希望我误解他了。有谁和我一样,也被欺骗过,说说。或者告诉我,我的确误解阻塞read了
该程序是APUE2第14章程序清单14-1 [code] #include "head.h" char buf[500000]; int main(int argc, char** argv) { int nwrite, ntowrite; char *ptr = NULL; ntowrite = read(STDIN_FILENO, buf, sizeof(buf)); fprintf(stderr, "read %d bytes\n", ntowrite); set_fl(STDOUT_FILENO, O_NONBLOCK); ptr = buf; ...
read()阻塞的读套接字时,应该只有对方断开连接才会返回0; 但是我在一个多线程程序中,对方并没断掉连接也返回0了,可能会有什么其他状况呢? 还望高手指点!:em14: