C 如何在字符串变量中存储服务器地址和端口
我正在创建客户机/服务器套接字,需要使用函数getsocketname()中的sockaddr\u获取套接字服务器IP。然而,我不知道如何做到这一点,因为我无法做类似的事情C 如何在字符串变量中存储服务器地址和端口,c,sockets,serversocket,C,Sockets,Serversocket,我正在创建客户机/服务器套接字,需要使用函数getsocketname()中的sockaddr\u获取套接字服务器IP。然而,我不知道如何做到这一点,因为我无法做类似的事情 struct sockaddr_in servAddr; int IP = servAddr.getsockname(sock, (struct sockaddr *) %servAddr,sizeof(servAddr)); 我相信getsockname()用于客户端,而不是服务器,并且只有在使用套接字成功连接到您定义的
struct sockaddr_in servAddr;
int IP = servAddr.getsockname(sock, (struct sockaddr *) %servAddr,sizeof(servAddr));
我相信getsockname()用于客户端,而不是服务器,并且只有在使用套接字成功连接到您定义的服务器之后才使用
要解释一下,将客户端连接到服务器的可能流程是:
getsockname(socketfd,(struct sockaddr*)&clientAddr,sizeof(clientAddr));
字符缓冲区[INET_ADDRSTRLEN];//存储客户端IP地址
inet_ntop(AF_inet和clientAddr.sin_addr、buffer、sizeof(buffer));
int port=(int)ntohs(clientAddr.sin_port);//存储客户端端口
printf(“IP地址:%s\n”,缓冲区);
printf(“端口:%d\n”,端口);
也许您可以添加一些细节,比如涉及哪个操作系统和编译器?此外,如果提供的代码更完整,也会有帮助;例如可编译程序包含main()等。在C中,结构不能有成员方法。没有函数getsocketname()
。你是说?