Linux下阻塞性socket问题
在做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 timeout的时间为30秒时,在超时前也只发了两次的syn包,请问connect期间发送几次syn报文在Linux中是否有设定,是否针对每个socket单独设定呢? 谢谢!
应该是不同的系统设定的重发的间隔时间不一样。 是协议栈自动发送的请求,对于发送间隔不同系统实现不一样 楼主可以把connect的返回值打出来看看,就可以看出是什么错误了。引用 是协议栈自动发送的请求,对于发送间隔不同系统实现不一样 楼主可以把connect的返回值打出来看看,就可以看出是什么错误了。 connect不成功返回的是-1啊,因为我测试时用了一个不存在的IP地址来测试的 我的问题是为什么我调用一次connect,Linux会发出两次syn包,这个是不是系统本身的重传机制? 我用的一个嵌入式系统调用connect就只会发送一个syn报文引用 应该是不同的系统设定的重发的间隔时间不一样。 Linux系统上怎么设定connect重发syn包的次数呢? 测试抓包如下图所示
相关问答:
有什么好的Linux教程吗? 小弟谢过~ [问题点数:0分] google 据说鸟哥的私房菜不错。 鸟哥的Linux私房菜 更多的再这上面去搜索一下很LIUNX书籍还不错 引用 google 正解 鸟哥的Linux私房菜 ......
linux 下C编程 集成开发环境 用什么比较好 我初步选定 codeblock 呵呵 还有 在linux 写了一个打印中文的代码,而今天在windows 下查看那个代码 , 是乱码 而后想到先用 EditPlus先进行编辑 然后复制 ......
在LINUX裏安裝 CURL 時,出現如下報錯 checking for SSL support in libcurl... no checking for curl_easy_perform in -lcurl... no configure: error: There is something ......
比方说函数 tcsetospeed函数,使用Qt Createor可以跳转到他的头文件 termios.h。但有时候想看一下这个函数是如何实现的,这时候该如何查找该函数的对应的实现文件呢? 我没用 Qt Creator 你可以看看Qt Creator的帮 ......