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

socket 编程中的 Accept函数问题

    来源: 互联网  发布时间:2016-01-11

    本文导语:  #include       #include       #include       #include       #include       #include       #include       #include      #include      #include      #define MYPORT 3490    /* the port users will be connecting to */ ...

#include  
    #include  
    #include  
    #include  
    #include  
    #include  
    #include  
    #include 
    #include 
    #include 

    #define MYPORT 3490    /* the port users will be connecting to */

    #define BACKLOG 10     /* how many pending connections queue will hold */

    main()
    {
        int sockfd, new_fd;  /* listen on sock_fd, new connection on new_fd */
        struct sockaddr_in my_addr;    /* my address information */
        struct sockaddr_in their_addr; /* connector's address information */
        int sin_size;

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
            perror("socket");
            exit(1);
        }

        my_addr.sin_family = AF_INET;         /* host byte order */
        my_addr.sin_port = htons(MYPORT);     /* short, network byte order */
        my_addr.sin_addr.s_addr = INADDR_ANY; /* auto-fill with my IP */
        bzero(&(my_addr.sin_zero), 8);        /* zero the rest of the struct */

        if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
            perror("bind");
            exit(1);
        }

        if (listen(sockfd, BACKLOG) == -1) {
            perror("listen");
            exit(1);
        }

        while(1) {  /* main accept() loop */
            sin_size = sizeof(struct sockaddr_in);
            if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) {
                perror("accept");
                continue;
            }
            printf("server: got connection from %sn", 
                                               inet_ntoa(their_addr.sin_addr));
            if (!fork()) { /* this is the child process */
                if (send(new_fd, "Hello, world!n", 14, 0) == -1)
                    perror("send");
                close(new_fd);
                exit(0);
            }
            close(new_fd);  /* parent doesn't need this */

            while(waitpid(-1,NULL,WNOHANG) > 0); /* clean up child processes */
        }
    }

[cry@localhost C++自己练习]$ g++ -o server server.cpp
server.cpp:61:6: 警告:文件未以空白行结束
server.cpp: In function ‘int main()’:
server.cpp:45: 错误:从类型 ‘int*’ 到类型 ‘socklen_t*’ 的转换无效
server.cpp:45: 错误:  初始化实参 3,属于 ‘int accept(int, sockaddr*, socklen_t*)’
[cry@localhost C++自己练习]$       

请高手指点为什么会报这个错。怎样改正。谢谢!

|
呵呵,俺也遇到过,把int sin_size;改为socklen_t sin_size就可以了。
原因在编译器的输出里已经说的很明白了,accept的最后一个参数是需要socklen_t*的类型
希望能够对你有所帮助

    
 
 

您可能感兴趣的文章:

  • php使用socket_bind()函数绑定IP地址
  • 当进程处于socket读阻塞模式中,外部SIGNAL发生,此时信号相应响应函数可否进行socket写?
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • Linux 下用什么函数查找socket上一次的错误?
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 驱动模块中用socket,哪有相关的函数啊??
  • socket编程,使用recvfrom()函数监听问题。
  • socket函数源码
  • linux 如何用SOCKET设置函数设置阻塞和非阻塞?
  • 求linux下socket函数手册
  • 关于socket中write()函数的问题
  • 如何知道一个用有没有权限调用bind()函数(socket编程的时候)
  • 请问有没有Linux下SOCKET服务端和客户端的接口函数!!
  • socket send函数疑问,缓冲区
  • linux下socket的send函数阻塞问题?
  • [求助]请问socket编程中send()函数可以发送整形数据吗?
  • socket send()函数错误
  • 编译socket程序需要加什么库函数?
  • socket callback函数问题
  • socket编程:recv(...)函数问题求救
  • 内核源文件/net/socket.c中调用其他模块的函数,该如何实现
  • 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问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • socket accept问题,大家指教。
  • 初学socket,求教关于listen和accept关系的问题。
  • socket编程select对accept的影响
  • 用accept系统调用得到的socket能用在readv和writev上吗?
  • java 中 SOCKET 的ACCEPT函数有返回值吗?怎样返回才是正常的?
  • 如何在主进程共享子线程中accept得到的socket号?
  • 在sockets中的Connect()/Accept()这样的包裹函数
  • socket编程accept返回值为0,是否正常?
  • (菜鸟飞飞) accept后创建的socket描述符问题
  • linux socket编程 accept 返回值的问题
  • close掉socket后,在accept了1024次后,出现打开文件最大限制1024的问题
  • 使用socket的accept()函数时Interrupted system call问题
  • linux socket 中 accept() 问题
  • 帮忙看下socket中的accept函数的问题(只剩30分了,大家别嫌少哈)
  • socket编程中accept()返回值出错?
  • socket编程 总是accept error 新手入门 希望大家帮帮忙 具体代码如下
  • 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定义及介绍
  • 博客 iis7站长之家
  • java命名空间java.net类socket的类成员方法: getport定义及介绍


  • 站内导航:


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

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

    浙ICP备11055608号-3