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

把setsockopt设置成REUSEADDR,为什么bind()还总是失败呢?

    来源: 互联网  发布时间:2017-03-19

    本文导语:  #include  #include  #include  #include /*定义close()*/ #include /*数据类型定义*/ #include /*提供socket函数结构*/ #include /*定义数据结构sockaddr_in*/ #include /*提供IP地址转换函数*/ #include /*提供设置获取域名的函数*/ #define BACKLOG 1 #defin...


#include 
#include 
#include 
#include /*定义close()*/
#include /*数据类型定义*/
#include /*提供socket函数结构*/
#include /*定义数据结构sockaddr_in*/
#include /*提供IP地址转换函数*/
#include /*提供设置获取域名的函数*/

#define BACKLOG 1
#define PORT 2234

int main(int argc,char *argv[])
{
    int socketfd,connectfd;
    struct sockaddr_in server;
    struct sockaddr_in client;
    socklen_t sin_size;

    if((socketfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
        perror("creat socketfd failed!");
        exit(1);
    }

    int opt=SO_REUSEADDR;
    setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));

    bzero(&server,sizeof(server));
    server.sin_family=AF_INET;
    server.sin_port=htons(PORT);
    server.sin_addr.s_addr=htonl(INADDR_ANY);


    if(bind(socketfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1);
    {
        perror("bind error!");
        exit(1);
    }

    if((listen(socketfd,BACKLOG))==-1)
    {
        perror("listen failed!");
        exit(1);
    }

    sin_size=sizeof(struct sockaddr_in);
    if((connectfd=accept(socketfd,(struct sockaddr *)&client,&sin_size))==-1)
    {
        perror("accept failed!");
        exit(1);
    }

    printf("you got a connection from%s:n",inet_ntoa(client.sin_addr));
    send(connectfd,"connect to servern",20,0);

    close(connectfd);
    close(socketfd);
    return 0;
}


|
楼主要仔细哇!
if(bind(socketfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1);这句后面多了一个分号!所以if后面的语句跟if就木有关系了。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我的setsockopt()总提示setsockopt: No such device
  • 问一个关于调用setsockopt函数设置tos值的问题
  • setsockopt出错
  • 关于igmp的setsockopt
  • setsockopt()函数的问题
  • [求助]请教各位一个关于setsockopt的问题!
  • setsockopt问题
  • 为什么setsockopt没有用?
  • 请问大家setsockopt()里面optval的作用到底什什么
  • 使用原始套接字来发送一个icmp包,不适用setsockopt做控制会怎么样?
  • setsockopt(),该函数的一个用法。
  • 求教:用poll和用Setsockopt设置SO_RCVTIMEO,SO_SNDTIMEO有什么区别?
  • 怎样解决"Cannot set Socket Options for Trasnmit Socket" error 当使用setsockopt() 在solaris 5.8
  • err=sock->ops->setsockopt(sock, SOL_SOCKET, ...);返回值代表的含义?
  • setsockopt的参数optname的意义?
  • setsockopt设置了linger选项的疑问
  • linux setsockopt 没有IPPROTO_TCP吗?(100)
  • 请问: setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL)); 中的,(const char*)&bDontLinger是什么意思啊
  • 请教关于setsockopt(来者有分)
  • setsockopt延时的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3