Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

05.02.2009, 17:08
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
Вроде и сервер работает.
Только вот как реализовать получение сообщений в любое время?
Допустим я отпарвил на сервер текст. Чтоб сервер его принял , необходимо там сделать recv(); , а если сервер не ждет? Допустим чаты же как то делают.
|
|
|

05.02.2009, 17:20
|
|
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
Провел на форуме: 505362
Репутация:
66
|
|
Нужно сделать рекурсию на сервере.
Допиши в конце кода сервера, перед ретурном:
не уверен, но скорее всего будет работать
|
|
|

05.02.2009, 17:34
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Glazz, сервер на то и сервер, что он всегда ждёт соединения, он случает какой-то порт, принимает на него соединение, запускает отдельный поток для обработки этого соединения, и продолжает слушать порт...
|
|
|

05.02.2009, 17:55
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
Сообщение от groundhog
Glazz, сервер на то и сервер, что он всегда ждёт соединения, он случает какой-то порт, принимает на него соединение, запускает отдельный поток для обработки этого соединения, и продолжает слушать порт...
а вот еще - если сервак принял чела , допустим идет обмен всяким , ну займет секунд 30. Второй клиент будет ждать это время? а если очередь из 10 человек? вот как эта многопоточность еще делается?
|
|
|

05.02.2009, 17:59
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
почитай про функцию accept из WinSock. Никто ничего не ждёт...
|
|
|

05.02.2009, 18:23
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
Сообщение от groundhog
почитай про функцию accept из WinSock. Никто ничего не ждёт...
Ну читал , он очередь из листена разргребает , ну ...
Видать я не правильно объясняю.
Допустим вот код:
Код:
while((client_s = accept(s, (sockaddr *)&client_addr,&client_addr_size)))
{
send();
....
}
Ведь в таком случае каждый клиент будет ждать так?
А как сделать , чтоб одновременно могло обслуживаться 2 иболее человека?
Я конечно быдлокодер , я начинал изучать Си++ , потом мне сказали лучше Си , и вот я ООП си++ Р. Лафоре половину прочел и начал писать на си.
Может мне нужно Многозадачность?
|
|
|

05.02.2009, 19:10
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 79
Провел на форуме: 272452
Репутация:
10
|
|
Сообщение от awdrg
Нужно сделать рекурсию на сервере.
Допиши в конце кода сервера, перед ретурном:
не уверен, но скорее всего будет работать
ЛОЛ )))) , скажу правду,более тупую вещь я еще не слышал.
|
|
|

05.02.2009, 19:15
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 79
Провел на форуме: 272452
Репутация:
10
|
|
Сообщение от Glazz
Ну читал , он очередь из листена разргребает , ну ...
Видать я не правильно объясняю.
Допустим вот код:
Код:
while((client_s = accept(s, (sockaddr *)&client_addr,&client_addr_size)))
{
send();
....
}
Ведь в таком случае каждый клиент будет ждать так?
А как сделать , чтоб одновременно могло обслуживаться 2 иболее человека?
Я конечно быдлокодер , я начинал изучать Си++ , потом мне сказали лучше Си , и вот я ООП си++ Р. Лафоре половину прочел и начал писать на си.
Может мне нужно Многозадачность?
Да, тебе нужно копать в стороны многопоточности.
Есть два решения,создать асинхронные сокеты или многопоточность.Первое долго объяснять, второе покажу на примере :
Код:
while(1)
{
SOCKET childSocket = accept(LocalSocket,NULL,NULL);
if( childSocket != -1 )
{
CreateThread(....);
}
}
Насчет CreateThread() прочти в мсдн.
|
|
|

05.02.2009, 22:48
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
Сообщение от xismyname
Да, тебе нужно копать в стороны многопоточности.
Насчет CreateThread() прочти в мсдн.
Читать же на msdn.microsoft.com ? у меня проблема - не могу зайти по домену на сайт , тока по ипу. И т.е. карртинки все н егрузятся и т.д. :\ пишет - невозможно найти сервер.
|
|
|

06.02.2009, 13:10
|
|
Познающий
Регистрация: 30.01.2009
Сообщений: 30
Провел на форуме: 75077
Репутация:
14
|
|
Сообщение от Glazz
Читать же на msdn.microsoft.com ? у меня проблема - не могу зайти по домену на сайт , тока по ипу. И т.е. карртинки все н егрузятся и т.д. :\ пишет - невозможно найти сервер.
Купи на базаре диск и поставь себе свой msdn. Пригодится.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|