Форум программистов CodeGuru
21 Январь 2018, 06:23:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: простой многопотоковый прокси  (Прочитано 14424 раз)
0 Пользователей и 1 Гость смотрят эту тему.
liopard
Новичок
*
Офлайн Офлайн

Сообщений: 2


Просмотр профиля
« : 24 Март 2010, 14:51:30 »

сделал все так как в примере.
Но почему-то, несмотря на использование потока, accept не срабатывает пока предыдущий сокет s не закроется.

ничо не понимаю...

примерно так:

SOCKET
listensocket,//слушающий сокет
s;//индивидуальный сокет клиента

struct sockaddr_in
saddr,//адрес слушающего
saddr_c;//адрес клиента

int
slen;

listensocket=socket(AF_INET,SOCK_STREAM,0);

saddr.sin_family = AF_INET ;//протокол tcp/ip
saddr.sin_addr .s_addr = INADDR_ANY ;//здесь можно уразать конкретный сетевой интерфейс
saddr.sin_port = htons(SERV_PORT);//порт

bind(listensocket,(LPSOCKADDR)&saddr,sizeof(saddr) );//привязка сокета к адресу

listen(listensocket,SOMAXCONN);//слушаем сокет на предмет подключения

for( ; ; ) //ждем клиентов
{
s=accept(listensocket,(struct sockaddr FAR*)&saddr_c,&slen);
if(s<=0)
break;
//далее все зависит от твоей фантазии, я создал для каждого клиента свой поток, где были и send(), и recv(), и select()
hThreadDo=CreateThread(NULL,0,ThreadDo,(LPVOID)s,0 ,&dwThreadDoId);
}


Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!