我的代码接受传入的连接并将它们存储在一个数组中。
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];
我做错了什么。
答案 0 :(得分:2)
更改此项(在打印连接的循环中):
struct sockaddr_in tempSock = IpList[connectionCount];
到此:
struct sockaddr_in tempSock = IpList[i];
应该有希望解决它:)