连接列表在C套接字编程中显示0.0.0.0

时间:2015-10-17 23:34:22

标签: c sockets

我的代码接受传入的连接并将它们存储在一个数组中。

if(i == sockServer){
                    //handle incoming connection
                    addrlen = sizeof(remoteaddr);
                    sockClient = accept(sockServer, (struct sockaddr*)&remoteaddr, &addrlen);
                    if(sockClient < 0){
                        perror("Accept failed: ");
                    }else{
                        FD_SET(sockClient, &master);
                        if(sockClient > fdmax){
                            fdmax = sockClient;
                        }

                        IpList[connectionCount] = remoteaddr;

                        connectionCount++;

当我尝试迭代数组并打印出连接的IP地址和端口号时代码中的后面,我得到以下内容。

 for (int i = 0; i < connectionCount; ++i)
                            {
                               struct sockaddr_in tempSock = IpList[connectionCount];
                               printf("%d  %s  %d\n", connectionCount, inet_ntoa(tempSock.sin_addr), ntohs(tempSock.sin_port));

                            }

0  0.0.0.0 0
1  0.0.0.0 0

该数组是静态分配的数组

struct sockaddr_in IpList[256]; 

我做错了什么。

1 个答案:

答案 0 :(得分:2)

更改此项(在打印连接的循环中):

struct sockaddr_in tempSock = IpList[connectionCount];

到此:

struct sockaddr_in tempSock = IpList[i];

应该有希望解决它:)