如果输入套接字的IP地址错误,如何“接受”?

时间:2013-11-26 01:49:36

标签: c linux sockets tcp

我遇到了一个看起来错误的ip地址的套接字。 具体来说,它从一个IP接收数据,但是将数据发送到不同的IP。 运行代码的相关部分如下:

struct sockaddr_in address;
socklen_t length = sizeof(address);

int FileHandle = accept(listen_sock->socket, (struct sockaddr*) &address, &length);

if (conn == -1) {
    printf("accept failed\n");
    return;
}

struct socket_data * connect = malloc(sizeof(struct uid_sock_data));
connect->socket = FileHandle;
connect->IP = address.sin_addr.s_addr;

if (!(connect->ssl = ssl_accept(SecurityContext, connect->socket))){
    printf("security handshake failed to ip:%d\n", connect->IP);
    close(connect->socket);
    free(connect);
    return;
}
printf("Success\n");

tcpdump显示一个tcp数据包,其中二进制数据来自一个IP地址,确认数据包(无数据)传出到同一个IP地址。然后看到带有SSL证书数据的数据包到达不同的IP地址(该数据包未被确认),并且打印出“安全握手失败”消息,显示第二个IP地址,没有收到任何请求。

第二个IP地址属于最后一个成功连接的客户端,但那是在12个小时之前,并且该计算机现在甚至没有打开。该软件在此之前正常运行了三天。关于我应该寻找什么的任何建议?如何“接受”给我错误的IP地址?!?

P.S。这是在Linux Ubuntu 12.04下运行。

0 个答案:

没有答案