powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Игровой сервер winsosk
13 сообщений из 63, страница 3 из 3
Игровой сервер winsosk
    #38484889
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghepardубрал строчку
Код: vbnet
1.
Load Winsock1(NumSockets)


и создал на форме контролов winsock1(1..1000) так? честно говоря не совсем понимаю чем это добавит стабильности, просвяти пожалста.а зачем? надо было просто ограничить загрузку очередного винсока при превышении ограничения
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38484907
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, дык ошибка сразу, у меня же уже на форме будет 300 винсоков загружены если их на форме разместить
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38484911
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а я не правильно тебя понял, не проснулся еще тогда)
дело в том что винсоксы рано или поздно все равно кончатся, т.к. они создаются при коннекте, если играть человек 500 будет да ещё и досить, то лонг и за день кончится, а без новых винсоков никак, только если старые задействовать, но я не совсем себе представляю как это сделать, так что единственным решением я вижу что действительно когда будет приближаться к лонг, то автоматом тушить и запускать сервер.
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38484913
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой порт лучше всего использовать для сервера? в исходнике 85, с приятелем тестили у него ошибку выдавало на клиенте, поставили 1001, заработало...
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38484922
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как вариант:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
If NumSockets = 10 Then NumSockets = 0

NumSockets = NumSockets + 1
  
For s = 1 To NumSockets  
    If Winsock1(NumSockets) <> 7 Then
        Winsock1(NumSockets).Close
        Winsock1(NumSockets).Accept requestID
Exit For
    End If
Next i



но вроде Winsock1(NumSockets).Close не моментален
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38484933
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обалдеть, работает....

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
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38485218
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghepard,

В данной теме VB.NET Winsock многопоточный сервер я ранее писал про свой маленький веб-сервер. Он загружает 100 винсоков в коллекцию. И при необходимости, когда появился реквест выделяет свободный и отдаёт на подключение. Когда сокет закрывается, используемый винсок снова возвращается в коллекцию. Итого достаточно стабильно работало всё.
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38485768
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghepardкакой порт лучше всего использовать для сервера? в исходнике 85, с приятелем тестили у него ошибку выдавало на клиенте, поставили 1001, заработало...Порты до 1024 считаются зарезервированными для разных сетевых служб.

Вот список зарегистрированных портов, которые точно не стоит использовать: тынц .
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38487201
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Load Winsock1(NumSockets) не убирай! Совсем не сложно помечать переменной(масив) as boolean о состоянии Socket (используется или не используется). Если по количеству сокетов мало, тогда используй Load, иначе используй закрытые сокеты (отработанные). Порт можно слушать один и тот же даже если используется много подключений. Использование коллекции почти равноценно работает как SET, но только это массив. Были случаи когда нужно было применять =nothing, так как работает связывание (таблицы баз данных пробовал в коллекцию заганять - работает). Для удобной работы можно пользоваться классами. Скорость чуть снижается, но без них не комфортно программировать. TCP порт - гарантирует доставку, но на клиенте он уже отправил данные, а сервер мог еще не принять, хотя клиент говорит 100% все выгрузил. Там как-то на уровне буферизации происходит - с опозданием. Для Game Server как раз не очень и подходит, ну только если игра стратегическая (на большое время). Пробовал атаковать на один порт параллельными потоками одновременно. 8 соединений и одновременных скачок поддерживает без проблем, но нужно ставить задержку (я использовал таймер в 10мс) на отправку данных - НЕ ЦЫКЛ!, так как была практика и цикл со временем вызовет ошибку с неизвестным характером (что-то о Memory). Если использовать цыкл, то наблюдается увеличение памяти самой программы (можно посмотреть в диспетчере), и работает при этом в десятки медленней. Когда объем достигает какого-то предела по всей видимости и выскакивает эта ошибка. Но с таймерами все спокойно. Единственное, что на протяжении дня все работает, а на протяжении недели замечал другие баги, которые не могу отследить. У меня иногда не используются закрытые порты и срабатывает Load для нового Winsock. Но это уже моя ошибка. Что-то недоглядел.
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38487224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Андрей159, привет. Тебе же уже советовали купить клавиатуру с энтером

Ну серьезно, тяжеловато читать такой "кирпич"
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38487334
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Сори. И спешил и хотел сжато все изложить что знаю. Как-никак раньше сам наивно спрашивал, а теперь зубы проел с сокетом.

Пора переходить на видеоблоги) тока с русским у меня не очень (я из Украины). Разговариваю нормально, но могут ржать от одного неверно сказанного слова. Да и на сколько меня хватит. до 15 видеосюжетов бы снял, а дальше бы просто исчерпался.

Часто не понимаю откуда у вас столько времени, чтобы всегда отвечать и просто жить на сайте. У меня просто дома ремонт делают. Меня все бесит, не могу ничего делать. Та и думаю почитаю, отвечу где что знакомо. Даже на работе начальство позволяет делать что хочу, а свободного времени полно, но интересней всегда что-то создавать, делать, а вот читать/отвечать на это нет времени.
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38492510
Ghepard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159, разбор полетов.

Load Winsock1(NumSockets) не убирай!
#Winsock1(NumSockets).Close# - Это?

Совсем не сложно помечать переменной(масив) as boolean о состоянии Socket (используется или не используется). Если по количеству сокетов мало, тогда используй Load, иначе используй закрытые сокеты (отработанные).
#Сокет = Сессия?# В моем понятии у каждого псевдо winsock1(индексового) может быть только одна сессия. А если на форме разместить 2 отдельных самостоятельных winsock то они не смогут совместно юзать один порт! Чем не устраивает Winsock.state??? 7 сессия открыта, 0 сесиия закрыта, остальные значения, занято и тип.того.

Порт можно слушать один и тот же даже если используется много подключений.
#Слушать да, но это не реалтайм, приходит запрос на создание сессии, подгружается, если ещё не загружен индексовый очередной winsock и берет на себя управление, и только после этого продолжается прослушка, это очень быстро происходит, но одновременно 2 запроса не могут быть обработаны на одном порту.#

Если я в чем то заблуждаюсь здесь, то далее по тексту советы просто не пойму, вроде бы уже всё сделал всё работает, клозить полюбому надо.

В общем ключ сокет это сессия или нет)))

В чем совет заключается не могу понять)))
...
Рейтинг: 0 / 0
Игровой сервер winsosk
    #38494871
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Ghepard:
"А если на форме разместить 2 отдельных самостоятельных winsock то они не смогут совместно юзать один порт!"
- Слушать одновременно не получиться, но я предлогаю (у меня так работает) слушать порт и в случае подключения вновь слушать этот порт следующим свободным сокетом.
"но одновременно 2 запроса не могут быть обработаны на одном порту"
Могут. Разберемся только о чем кто думает.
- Слушать порт №nn можно только чем-то одним
- Делая процедуру подключения к порту, выделяется уникальный ID код по которому потом будет происходить общение, а порт №nn освобождается
- Этот порт №nn можно другим сокетом слушать, что делает приложение многопользовательским или многопотоковым
- С каждым соединением программа справится (нет такого понятия как одновременно, не вовремя включили прослушку), поскольку информацию мы снимаем с буфера, принимаем и отправляем в буфер, так как tcp протокол этот протокол с гарантией приема/доставки и как он работает на уровне ассемблера не известно, главное работает.
...
Рейтинг: 0 / 0
13 сообщений из 63, страница 3 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Игровой сервер winsosk
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]