Глюки в прокси time_wait и Established
От: alexora  
Дата: 16.06.03 13:57
Оценка:
Я пишу типа обратного прокси. Работает на ура. Но на самом серваке при $netstat -na, оно вываливает что есть 2 потока как Established и 8 Time_wait. Я не могу вдуплить какого у меня тут time_wait появляется. Вроде как только accept возвращает сокет, я сразу создаю поток, считываю с него и закрываю.
Может кто то подскажет почему time_wait появляются и отчего.



Заранее благодарен.

Вот куски кода :
...
///////////////////////////жду подключение/////////////////////////

while((client_socket=accept(mysocket, (sockaddr *) &client_addr, &client_addr_size)))
{
error = UpdateParams();
HOSTENT *hst;
hst=gethostbyaddr((char *) &client_addr.sin_addr.s_addr,4,AF_INET);
DWORD thID;
/////////////////////////создаю поток, передав сокет///////////////
CreateThread(NULL,NULL,SexToClient,&client_socket,NULL,&thID);
}

...

///////////////////////////////функция которая по сокету, которій принимает accept, обрабатывает запрос///////
DWORD WINAPI SexToClient(LPVOID client_socket)
{
SOCKET my_sock;
my_sock=((SOCKET *) client_socket)[0];
char buff[20*1024];
int bytes_recv;
while((bytes_recv=recv(my_sock,&buff[0],sizeof(buff),0)) && (bytes_recv != SOCKET_ERROR))
{
SOCKET server_sock;
server_sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in dest_addr;
dest_addr.sin_family=AF_INET;
dest_addr.sin_port=htons(PORTREDIRECT);
HOSTENT *hst;
if (inet_addr(SERVERADDR)!=INADDR_NONE) dest_addr.sin_addr.s_addr=inet_addr(SERVERADDR);
else
if (hst=gethostbyname(SERVERADDR))
((unsigned long *)&dest_addr.sin_addr)[0]=((unsigned long **)hst->h_addr_list)[0][0];
else
{
closesocket(server_sock);
WSACleanup();
return -1;
}
if (connect(server_sock,(sockaddr *)&dest_addr,sizeof(dest_addr))) return -1;
send(server_sock,&buff[0],bytes_recv,0);
long bytes_servget;
while((bytes_servget=recv(server_sock,&buff[0],sizeof(buff),0)) && (bytes_servget != SOCKET_ERROR))
{
send(my_sock,&buff[0],bytes_servget,0);
}
}
closesocket(my_sock);
return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.