当前位置:  技术问答>linux和unix

急,socket编程的两个问题,谢谢

    来源: 互联网  发布时间:2015-10-31

    本文导语:  uclinux系统2.4的内核  1.一个socket创建后,设为NONBLOCK,connect成功,这时将服务器挂断,此时调用  send(socket_fd,ptr,bytes_left,MSG_NOSIGNAL);第一次能发送成功,第二次才返回EPIPE,这是为什么?怎么才能使其第一次就返回对...

uclinux系统2.4的内核 

1.一个socket创建后,设为NONBLOCK,connect成功,这时将服务器挂断,此时调用 
send(socket_fd,ptr,bytes_left,MSG_NOSIGNAL);第一次能发送成功,第二次才返回EPIPE,这是为什么?怎么才能使其第一次就返回对方服务器已挂断。 

2.一个socket创建后,bind,listen,再accept一个连接,收发数据后,将listen_sock和accept_sock都close,再create,bind,此时bind就会失败,这是为什么?怎么解决?这是否和我没有在close之前shutdown有关? 

急,哪位帮个忙,谢谢!!!

|
回答第2个问题:因为你bind一个地址之后,就算你关闭了,已关闭的SOCKET进行TIME_WAIT状态。所以你要过一段时间才能用,你在创建socket后调用这个函数就行了
bool SockUtilEnableNoTimeWait(int sock)
{
struct linger linger;
socklen_t nLingerLen = sizeof(linger);

linger.l_onoff = 1;
linger.l_linger = 0;

if (setsockopt(sock, SOL_SOCKET, SO_LINGER,
(char*)&linger, nLingerLen) == -1)
{
//设置失败
return false;
}
else
{
//设置成功
return true;
}
}
这样下次就能立刻使用

|
第一个问题,如果你不是正常close掉服务器的套接字的话,属于非异常断开,这是另一端并不能马上就检测到链接异常。

    
 
 

您可能感兴趣的文章:

  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • 在一个socket守护服务进程中,如何实现同时监听两个端口?
  • socket问题两个
  • 如果两个线程操作同一个Socket,一个线程recv,另一个send。这样会不会导致程序莫名其妙的退出
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 这个socket程序的服务进程开始服务后,为什么总是两个进程?
  • (毕业设计呀,好惨!)两个JBulider应用程序(未打包)之间互相传递信息(比如说用户名,用户密码,登陆日期等等),除了用Socket,还有其他方法吗?(
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 关于文件操作和Socket网络编程!
  • linux下socket编程问题!
  • socket编程 中的bind问题
  • socket编程--htons
  • 急!!请教关于linux socket编程的一个问题!!
  • 急!关于SOCKET编程,在线等待!
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • 多进程socket编程问题
  • 问一个socket编程问题,急~~~
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 请教一个socket编程问题
  • 求助!!linux下socket编程
  • socket编程,使用recvfrom()函数监听问题。
  • sco unix下socket编程的问题,请大家帮忙
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • linux下socket连接数怎么扩充到1024以上.请指教.谢谢
  • 请问如何捕获linux c SOCKET中SEND的错误,请指教,谢谢!
  • 请问怎么通过Socket发送一个int数值?急,谢谢!!
  • 求Servlet与applet通过socket通讯,相关资料或源码,网址都行!谢谢啦。
  • 谁知道solaris对socket的recv和send函数是否是原子操作,谢谢!!
  • 请问有没有办法方便提取某个已知进程所占用的socket号?谢谢
  • socket连接函数connect()返回错误 errno 为 115,什么原因?谢谢
  • 请问如何在socket编程中实现网络登陆验证?谢谢大家!
  • 请问一下,有谁知道linux源代码中socket(int domain, int type, int protocol);函数的定义是在哪个文件中啊?小弟我找了很久,都没找到,谢谢哈。
  • SOCKET编程问题,请给看一下,谢谢了
  • 谁能给一个unix下用c写的服务器端socket例子,谢谢了,急啊
  • 求助:各位大哥能给一个 socket 程序(服务器一个,客户端一个),谢谢!马上送分哦~
  • 对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢
  • 真心求助:各位大哥能帖一个 socket 程序的例子吗?(要是多线程序的),分少了开帖再加!谢谢!
  • socket编程,建立连接后为何必须不断地发送,只要间隔3s再发送,对方就收不到数据了?怎么办?谢谢
  • 求有关socket等通讯方面的源代码,以供参考,希望大家帮帮我!谢谢
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3