【发布时间】:2015-12-13 09:56:42
【问题描述】:
我有一个 TCP 服务器和客户端。服务器代码部分:
/*int Main()*/
while(1)
{
client_socket = accept (my_socket, (sockaddr *)&client_addr, &client_addrlen);
nclients++;
HOSTENT *my_host;
my_host = gethostbyaddr((char *)&client_addr.sin_addr.S_un.S_addr, 4, AF_INET);
htons(client_addr.sin_port));
printf("Client name: %s\n", (my_host) ? my_host->h_name : "");
printf("Client IP: %s\n", inet_ntoa(client_addr.sin_addr)); //here is client IP
PRINTNUSERS;
DWORD threadID;
CreateThread(NULL, NULL, ClientFunc, &client_socket, NULL, &threadID);
}
对于每个新客户,我想创建一个新线程来处理它
DWORD WINAPI ClientFunc(LPVOID client_socket)
{
SOCKET Thread_sock;
Thread_sock = ((SOCKET *)client_socket)[0];
SOCKADDR_IN Thread_addr; //how can i connect thread IP with client IP
/*send(), recv() operations*/
}
我想在我的线程中打印客户端 IP。
如何获取位于 Thread_addr.sin_addrstructure 中的客户端 IP 地址。我的客户端 IP 地址位于我的 int main()function 上,但如何将其与线程连接?
【问题讨论】:
标签: c++ multithreading sockets winapi tcp