亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3576 | 回復: 2
打印 上一主題 下一主題

一個關于accept 和 inet_ntoa 的問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-01-20 18:38 |只看該作者 |倒序瀏覽
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <strings.h>
#include <sys/socket.h>
#include <netinet/in.h>

void client()
{
        sleep(3);       

        int childsock = socket(AF_INET,SOCK_STREAM,0);
        if (childsock == -1)
        {
                perror("create socket in child");
                exit(1);
        }
        struct sockaddr_in server;
        bzero(&server,sizeof(server));
        server.sin_family = AF_INET;
        server.sin_port = htons(10000);
        server.sin_addr.s_addr = inet_addr("127.0.0.1");

       
        if (connect (childsock,(struct sockaddr*)&server,sizeof(struct sockaddr)) == -1)
        {
                perror("connect in child ");
                exit(1);
        }
        close (childsock);
        exit(0);
}



int main()
{
        int i = 0;
        for (; i < 10 ; i++)
        {
                pid_t child = fork ();
                if (child == -1)
                {
                        perror("fork");
                        exit(1);
                }
                else if (child == 0)
                {
                        client();
                }
        }
       
        int retcd;
        int sock = socket(AF_INET,SOCK_STREAM,0);
        if(sock == -1)
        {
                perror("socket");
                exit(1);
        }
               
        int sopt = 1;
        retcd = setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&sopt, sizeof(int));
        if (retcd == -1)
        {
                perror("setsockopt");
        }
       
        struct sockaddr_in local;
        bzero(&local,sizeof(local));
        local.sin_family = AF_INET;
        local.sin_port = htons(10000);
        local.sin_addr.s_addr = INADDR_ANY;
               
        if ( bind(sock,(struct sockaddr*)&local,sizeof(struct sockaddr)) == -1 )
        {
                perror("bind");
                exit(1);
        }       
       
        if ( listen(sock,10) == -1 )
        {
                perror("listen");
                exit(1);
        }

        while (1)
        {       
                struct sockaddr_in remote;
                socklen_t len;
                int newsock = accept(sock,&remote,&len);

                printf("Request from %s\n",inet_ntoa(remote.sin_addr));                       
        }

        close(sock);
}
desktop:/data/learning/C/net # ./accept_sockaddr
Request from 0.0.0.0
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1
Request from 127.0.0.1


每次運行結果的第一次IP 都不對 不知道為什么
請大家?guī)臀曳治龇治?br />
[ 本帖最后由 xiaozi16 于 2010-1-20 18:39 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2010-01-21 08:48 |只看該作者

回復 #1 xiaozi16 的帖子

哥們兒,按套路來就沒問題了

                struct sockaddr_in remote;
               //加上這一句
                socklen_t len = sizeof(struct sockaddr_in);                          
                int newsock = accept(sock,(struct sockaddr*)&remote,&len);

論壇徽章:
0
3 [報告]
發(fā)表于 2010-01-21 10:48 |只看該作者

回復 #2 rain_fish 的帖子

  謝謝你的答復  解決了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP