相关推荐
-
关于socket阻塞与非阻塞情况下的recv、send、read
http://allenli1987.blog.163.com/blog/static/192332154201242434813196/ 关于socket阻塞与非阻塞情况下的recv、send、read 2012-05-24 15:48:13| 分类: IT|举报|字号 订阅 1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区
-
非阻塞socket网络编程之数据收发完整代码示例
非阻塞socket网络编程之数据收发完整代码示例
-
阻塞socket 和非阻塞socket的区别(浅显易懂版)
对于这个问题,我们要先弄清什么是阻塞/非阻塞。阻塞与非阻塞是对一个文件描述符指定的文件或设备的两种工作方式。阻塞的意思是指,当试图对该文件描述符进行读写时,如果当时没有东西可读或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。非阻塞的意思是,当没有东西可读或者不可写时,读写函数就马上返回,而不会等待。现在来理解什么是阻塞socket,什么是非阻塞socket。
-
socket编程中的阻塞与非阻塞
通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待。 在Tcp通信的例子中,很多时候就是采用的阻塞式的工作方式:当接收tcp
-
Socket的阻塞模式和非阻塞模式
阻塞模式 Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。
-
非阻塞方式下Socket读取数据的一个例子
2001年08月19日 16:17:00 标题:非阻塞方式下Socket读取数据的一个例子作者:DreamTiger发表时间:2000-1-15 下午 05:59:13发信人: lBlade (刀锋), 信区: Delphi 标 题: Re: 斑竹帮忙看看偶这段Socket程序!救救我! (转载)发信站: BBS 水木清华站 (Tue Jan 11 14:22:56 200
-
非阻塞式socket
引言 返回错误EWOULDBLOCK或EAGAIN。 套接字的默认状态是阻塞的。这就意味着当发出一个不能立即完成的套接字调用时,其进 程将被投入睡眠,等待相应操作完成。可能阻塞的套接字调用可分为以下四类: ( 1 ) 输入操作,包括read 、 readv、 recv、 recvfrom和 recvmsg共5个函数。如果某个进程对一个阻塞的TCP套接字(默认设置)调用这些输入函数之,而且该...
-
socket阻塞与非阻塞读写
网络协议一般都是由head和body构成。 socket在实际应用中有2种方式,阻塞和非阻塞。 使用setsockopt()可以在2种方式之间切换。 /** * * 设置非阻塞模式(for Win32) * **/ int nNonBlocking = 1; ioctlsocket(sockListen,FIONBIO,&nNonBlocking); 先看阻塞
-
linux网络编程:设置非阻塞socket收发数据
非阻塞式I/O包括非阻塞输入操作,非阻塞输出操作,非阻塞接收外来连接,非阻塞发起外出连接。包括的函数有:read, readv, recv, recvfrom, recvmsg, write, writev, send, sendto, sendmsg, accept。 将socket 设置为非阻塞模式有三种方法
-
QTcpSocket通信编程时阻塞与非阻塞的问题
目标,qt程序作为客户端,windows下winsock作为服务器端,实现两端通信。开始时写了一个小函数测试:QTcpSocket tmpSock;tcpSock.connectToHost("59.64.159.87",7716);tcpSock.write(buf,strlen(buf)+1);msleep(3000);tcpSock.disconnect();
-
Java中Socket通信的基本方法
从Socket中读取数据 创建Socket连接到Server Socket chatSocket = new Socket("127.0.0.1", 5000);创建Socket的时候需要用到两个重要的参数,一个是IP地址,另外一个是端口号。IP地址可以理解成网络中特定位置的计算机(服务器相当于一台连续工作的计算机),端口号对应于计算机中特定的服务或者应用。 这里的IP地址127.0.0.1是本机
-
从缓冲上看阻塞与非阻塞socket在发送接收上的区别
最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞的区别,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。 首先soc
-
linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写
本文提供了设置串口通讯的接口,方便大家对程序的复用,感觉还是面向对象的语言更方便呀;在给模块发送指令后需要读取模块返回的数据时,保险起见采用阻塞式读取,且串口一次只能读取8位byte数据,注意读取数据的调用函数;注意在读写命令中存在零的16进制的数据时的方式;通信成功,但恰遇到模块总返回操作失败的代码的问题。
-
VC下SOCKET通信,设置非阻塞模式,添加心跳检查
/* VC下SOCKET通信,设置非阻塞模式,添加心跳检查 */ #include #pragma comment(lib, "ws2_32.lib") /* mstcpip.h */ struct tcp_keepalive { u_long onoff; u_long keepalivetime; u_long keepaliveinterval; }; t
-
如何将socket设置成非阻塞的,非阻塞socket与阻塞的socket在收发数据上的区别
1. 生成socket时设置 socket函数创建socket默认是阻塞的,也可以增加选项将socket设置为非阻塞的: int s = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP); 2. 使用fcntl设置 将socket设置为非阻塞的 if ((nFlags = fcntl (nSock, F_GETFL, 0)) ...
-
Socket通讯读取数据阻塞解决方案
一、问题描述 while ((len = in.read(bytes)) != -1) { os.write(bytes, 0, len); os.flush(); } 1.read方法读取文件数据时读取到文件末尾返回-1. 2.在socket通讯过程从InputStream输入流中读取数据时如果没有数据可读会一直阻塞,如果关闭流会返回-1。 Socke
-
java NIO非阻塞方式的Socket编程
1.非阻塞方式的Socket编程: 传统阻塞方式的Socket编程,在读取或者写入数据时,TCP程序会阻塞直到客户端和服务端成功连接,UDP程序会阻塞直到读取到数据或写入数据。阻塞方式会影响程序性能,JDK5之后的NIO引入了非阻塞方式的Socket编程,非阻塞方式的Socket编程主要是使用Socket通道和Selector通道选择器,将Socket通道注册到通道选择器上,通过通道选择器选择通
-
socket编程 —— 非阻塞socket
在上一篇文章 《socket编程——一个简单的例子》 http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单的tcp socket通信程序,可以进行数据的交互,但有一个问题是这个程序是阻塞的,任何socket函数都要等返回后才能进行下一步动作,如果recv一直没有数据,那么就一直不会返回,整个进程就阻塞在那。所以我们要进行改造一下,让程序不再阻塞在那,而是在有数据到来的时候读一下数据,有数据要写的时候发送一下数据。
2 楼 songze39 2009-03-13 09:25
1 楼 hantsy 2008-09-12 19:02