ChinaUnix.net
相关文章推荐:

linux socket 阻塞

有A,B两个台机器,运行同一个程序,程序中会用分别用IPa, IPb 和端口1521 先Listen(listen监听多个连接), 然后用非阻塞socket 去连接对端。连接正常情况下,有两条链路,每条链路有1s的心跳检测, 10秒超时候,重新建立自己的链路(即哪条链路断开,就重建哪条)。 1) 在A上查到链路信息: channel1 :172.30.128.22:1521<-172.30.128.21:44410 channel2 :172.30.128.22:51967->172.30.128.21:1521 2)和3)都...

by river617 - Linux环境编程 - 2010-07-03 09:30:38 阅读(1436) 回复(3)

相关讨论

在做linux阻塞性TCP部分的Code,遇到一个问题请教一下大家 调用tcp connect前,使用函数 setsocktopt(s, SOL_socket, SO_SNDTIMEO, &tv, sizeof(tv)); 来设定tcp connect timeout的时间为5秒 我使用一个不可达的IP做测试,发现connect timeout前会发两次syn报文,这两个syn报文的source port是一样的。请问这是不是linux系统在connect时自动发的啊,因为我发现两次的间隔是3秒,符合tcp重连的机制 但是我设定connect tim...

by win847 - Linux环境编程 - 2010-03-02 18:25:49 阅读(4293) 回复(6)

linux下面socket编程的非阻塞TCP研究 tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存中不能容纳的那部分...

by marvinlee - Linux文档专区 - 2009-08-30 03:00:01 阅读(2038) 回复(0)

引用链接:http://xufish.blogbus.com/logs/40537344.html tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数立即返回,同时向网络中发送数据;否则,send向网络发送缓存...

by zlm8715 - 网络技术文档中心 - 2009-07-30 12:36:05 阅读(1342) 回复(0)

一个系统中,我写的模块中程序运行到用socket()函数申请套接字就卡在那儿不动了,用gdb调试和printf输出都发现是卡在这一句 问题很怪,请大侠们解决。都卡了2个星期了,还解决不了 我现在做的是在一个dbms中的一个模块,不知道是不是前面进程申请多了,或者是程序设计的框架(比如fork)有问题

by hustdba - Linux环境编程 - 2009-07-06 11:25:33 阅读(1113) 回复(0)

linux socket编程之阻塞套接字和非阻塞套接字    每一个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用进程调用 write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假设套接口是阻塞的,这是通常的缺省设...

by marvinlee - Linux文档专区 - 2009-08-30 03:11:46 阅读(913) 回复(0)
by smilinglw - Linux环境编程 - 2009-02-25 15:55:41 阅读(2189) 回复(1)

我们用的开发平台是基于linux 2.4 内核代码上的,上层的应用程序都是通过socket进行通信的(包括进程间通信和网络通信),socket都设置位nonblock,但是最近经过测试发现有两种情况下socket的系统调用会一直阻塞不能返回: 1,select的调用,这种情况下的socket是作为服务端,且已经建立了连接,我们对select设置了超时时间,但有时候可能是由于调用select太频繁(服务端向客户端发送大数据,服务端把大数据分片发送,select就是等...

by wwzg99 - 内核/嵌入技术 - 2006-09-20 17:16:32 阅读(1299) 回复(0)

我们用的开发平台是基于linux 2.4 内核代码上的,上层的应用程序都是通过socket进行通信的(包括进程间通信和网络通信),socket都设置位nonblock,但是最近经过测试发现有两种情况下socket的系统调用会一直阻塞不能返回: 1,select的调用,这种情况下的socket是作为服务端,且已经建立了连接,我们对select设置了超时时间,但有时候可能是由于调用select太频繁(服务端向客户端发送大数据,服务端把大数据分片发送,select就是等...

by wwzg99 - 内核源码 - 2006-09-20 17:16:32 阅读(1935) 回复(0)

现在开了一个线程,要在里边管理两个非阻塞socket,一个用于发送指令,另一个用于大数据量的传输,有什么需要注意的吗? 如果有相关代码提供参考最好了。多谢!!

by lzh8430 - Linux环境编程 - 2014-07-23 08:53:33 阅读(1125) 回复(2)

应用场景是: A, B建立非阻塞socket通讯,在某个时刻,A发送完数据后,进程退出了,这时候B有可能没有收到A最后发送的数据。 有什么办法,让A在退出前,确保数据都发送到对端的缓冲区? 我看资料说,只要发送到对端的缓冲区,B就能可以通过recv接受到。

by river617 - Linux环境编程 - 2010-09-25 16:42:48 阅读(2254) 回复(1)