|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Ghepardубрал строчку Код: vbnet 1.
и создал на форме контролов winsock1(1..1000) так? честно говоря не совсем понимаю чем это добавит стабильности, просвяти пожалста.а зачем? надо было просто ограничить загрузку очередного винсока при превышении ограничения ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 12:19 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Shocker.Pro, дык ошибка сразу, у меня же уже на форме будет 300 винсоков загружены если их на форме разместить ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 12:45 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
а я не правильно тебя понял, не проснулся еще тогда) дело в том что винсоксы рано или поздно все равно кончатся, т.к. они создаются при коннекте, если играть человек 500 будет да ещё и досить, то лонг и за день кончится, а без новых винсоков никак, только если старые задействовать, но я не совсем себе представляю как это сделать, так что единственным решением я вижу что действительно когда будет приближаться к лонг, то автоматом тушить и запускать сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 12:51 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
какой порт лучше всего использовать для сервера? в исходнике 85, с приятелем тестили у него ошибку выдавало на клиенте, поставили 1001, заработало... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 12:53 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
как вариант: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
но вроде Winsock1(NumSockets).Close не моментален ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 13:16 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
обалдеть, работает.... If NumSockets = 10 Then NumSockets = 0 NumSockets = NumSockets + 1 For s = 1 To NumSockets '11 winsock1(0..10) на форме If Winsock1(NumSockets).State <> 7 Then Winsock1(NumSockets).Close Winsock1(NumSockets).Accept requestID Exit For End If Next s ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 13:29 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Ghepard, В данной теме VB.NET Winsock многопоточный сервер я ранее писал про свой маленький веб-сервер. Он загружает 100 винсоков в коллекцию. И при необходимости, когда появился реквест выделяет свободный и отдаёт на подключение. Когда сокет закрывается, используемый винсок снова возвращается в коллекцию. Итого достаточно стабильно работало всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 20:01 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Ghepardкакой порт лучше всего использовать для сервера? в исходнике 85, с приятелем тестили у него ошибку выдавало на клиенте, поставили 1001, заработало...Порты до 1024 считаются зарезервированными для разных сетевых служб. Вот список зарегистрированных портов, которые точно не стоит использовать: тынц . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:20 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Load Winsock1(NumSockets) не убирай! Совсем не сложно помечать переменной(масив) as boolean о состоянии Socket (используется или не используется). Если по количеству сокетов мало, тогда используй Load, иначе используй закрытые сокеты (отработанные). Порт можно слушать один и тот же даже если используется много подключений. Использование коллекции почти равноценно работает как SET, но только это массив. Были случаи когда нужно было применять =nothing, так как работает связывание (таблицы баз данных пробовал в коллекцию заганять - работает). Для удобной работы можно пользоваться классами. Скорость чуть снижается, но без них не комфортно программировать. TCP порт - гарантирует доставку, но на клиенте он уже отправил данные, а сервер мог еще не принять, хотя клиент говорит 100% все выгрузил. Там как-то на уровне буферизации происходит - с опозданием. Для Game Server как раз не очень и подходит, ну только если игра стратегическая (на большое время). Пробовал атаковать на один порт параллельными потоками одновременно. 8 соединений и одновременных скачок поддерживает без проблем, но нужно ставить задержку (я использовал таймер в 10мс) на отправку данных - НЕ ЦЫКЛ!, так как была практика и цикл со временем вызовет ошибку с неизвестным характером (что-то о Memory). Если использовать цыкл, то наблюдается увеличение памяти самой программы (можно посмотреть в диспетчере), и работает при этом в десятки медленней. Когда объем достигает какого-то предела по всей видимости и выскакивает эта ошибка. Но с таймерами все спокойно. Единственное, что на протяжении дня все работает, а на протяжении недели замечал другие баги, которые не могу отследить. У меня иногда не используются закрытые порты и срабатывает Load для нового Winsock. Но это уже моя ошибка. Что-то недоглядел. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 12:34 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Андрей159Андрей159, привет. Тебе же уже советовали купить клавиатуру с энтером Ну серьезно, тяжеловато читать такой "кирпич" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 12:45 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Shocker.Pro, Сори. И спешил и хотел сжато все изложить что знаю. Как-никак раньше сам наивно спрашивал, а теперь зубы проел с сокетом. Пора переходить на видеоблоги) тока с русским у меня не очень (я из Украины). Разговариваю нормально, но могут ржать от одного неверно сказанного слова. Да и на сколько меня хватит. до 15 видеосюжетов бы снял, а дальше бы просто исчерпался. Часто не понимаю откуда у вас столько времени, чтобы всегда отвечать и просто жить на сайте. У меня просто дома ремонт делают. Меня все бесит, не могу ничего делать. Та и думаю почитаю, отвечу где что знакомо. Даже на работе начальство позволяет делать что хочу, а свободного времени полно, но интересней всегда что-то создавать, делать, а вот читать/отвечать на это нет времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 13:54 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
Андрей159, разбор полетов. Load Winsock1(NumSockets) не убирай! #Winsock1(NumSockets).Close# - Это? Совсем не сложно помечать переменной(масив) as boolean о состоянии Socket (используется или не используется). Если по количеству сокетов мало, тогда используй Load, иначе используй закрытые сокеты (отработанные). #Сокет = Сессия?# В моем понятии у каждого псевдо winsock1(индексового) может быть только одна сессия. А если на форме разместить 2 отдельных самостоятельных winsock то они не смогут совместно юзать один порт! Чем не устраивает Winsock.state??? 7 сессия открыта, 0 сесиия закрыта, остальные значения, занято и тип.того. Порт можно слушать один и тот же даже если используется много подключений. #Слушать да, но это не реалтайм, приходит запрос на создание сессии, подгружается, если ещё не загружен индексовый очередной winsock и берет на себя управление, и только после этого продолжается прослушка, это очень быстро происходит, но одновременно 2 запроса не могут быть обработаны на одном порту.# Если я в чем то заблуждаюсь здесь, то далее по тексту советы просто не пойму, вроде бы уже всё сделал всё работает, клозить полюбому надо. В общем ключ сокет это сессия или нет))) В чем совет заключается не могу понять))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2013, 00:29 |
|
Игровой сервер winsosk
|
|||
---|---|---|---|
#18+
to Ghepard: "А если на форме разместить 2 отдельных самостоятельных winsock то они не смогут совместно юзать один порт!" - Слушать одновременно не получиться, но я предлогаю (у меня так работает) слушать порт и в случае подключения вновь слушать этот порт следующим свободным сокетом. "но одновременно 2 запроса не могут быть обработаны на одном порту" Могут. Разберемся только о чем кто думает. - Слушать порт №nn можно только чем-то одним - Делая процедуру подключения к порту, выделяется уникальный ID код по которому потом будет происходить общение, а порт №nn освобождается - Этот порт №nn можно другим сокетом слушать, что делает приложение многопользовательским или многопотоковым - С каждым соединением программа справится (нет такого понятия как одновременно, не вовремя включили прослушку), поскольку информацию мы снимаем с буфера, принимаем и отправляем в буфер, так как tcp протокол этот протокол с гарантией приема/доставки и как он работает на уровне ассемблера не известно, главное работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2013, 03:49 |
|
|
start [/forum/topic.php?fid=60&gotonew=1&tid=2156648]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 168ms |
0 / 0 |