如何在c中使用tcp套接字编程查找客户端ip地址
我正在尝试开发一个TCP服务器,因为服务器客户端在建立连接后正在与服务器连接。但是如何从该连接中找到ip地址呢。这里给出了示例代码如何在c中使用tcp套接字编程查找客户端ip地址,c,sockets,tcp,C,Sockets,Tcp,我正在尝试开发一个TCP服务器,因为服务器客户端在建立连接后正在与服务器连接。但是如何从该连接中找到ip地址呢。这里给出了示例代码 int connfd; int listenfd; struct sockaddr_in cliaddr; socklen_t clilen; connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen); 这不是确切的代码。但是现在我需要以字符串的形式找到客户端地址。accept()
int connfd;
int listenfd;
struct sockaddr_in cliaddr;
socklen_t clilen;
connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
这不是确切的代码。但是现在我需要以字符串的形式找到客户端地址。accept()
分别在sin\u addr
和sin\u port
结构成员中填充的sockaddr\u结构中提供客户端的远程IP地址和端口号。这两个值都是网络字节顺序的数值。您可以使用类似于inet\u ntoa()
的函数将IP转换为人类可读的字符串,并使用ntohs()
将端口号转换为字节顺序与调用机器匹配的整数,以便更自然地使用它
另请查看getpeername()
和getsockname()
函数。accept()
分别在sin\u addr
和sin\u port
结构成员中,在它填充的sockaddr\u in
结构中提供客户端的远程IP地址和端口号。这两个值都是网络字节顺序的数值。您可以使用类似于inet\u ntoa()
的函数将IP转换为人类可读的字符串,并使用ntohs()
将端口号转换为字节顺序与调用机器匹配的整数,以便更自然地使用它
另请查看getpeername()
和getsockname()
函数。cliaddr是客户端结构sockaddr\u的结构变量
cliaddr.sin_addr.s_addr包含客户端的IP地址
内部地址(AF_inet,&(cliaddr.sin_addr)、clientAddr、CLADDR_LEN);将客户端的IP地址检索到字符串clientAddress中。cliaddr是客户端的结构sockaddr\u in的结构变量
cliaddr.sin_addr.s_addr包含客户端的IP地址
内部地址(AF_inet,&(cliaddr.sin_addr)、clientAddr、CLADDR_LEN);将客户端的IP地址检索到字符串ClientAddress中。您是否想查找您正在使用的任何类型?很抱歉,我没有找到您。我的意思是:阅读您正在使用的数据类型的文档。这里可能有一个提示…你有没有想过要查找你正在使用的任何类型?很抱歉,我没有理解你的意思。我的意思是:阅读你正在使用的数据类型的文档。这里可能有个暗示。。。