Скорость передачи по WinSock

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Скорость передачи по WinSock

Сообщение Саша_ОР » 12.09.2006 (Вт) 13:55

Добрый день!
Дамы и господа, помогите пожалуйста. Так вот, делаю я игру по сети, танк через каждые 50 миллисекунд изменяет координаты и они пересылаются с такой же скоростью по сети, но почему-то положение танка изменяется только через секунду. Использовал индексы, но это усложняет код, нет ли другого, более оптимизированного способа, а так же можно ли посылать пакет сразу же, не выходя из процедуры?
Заранее благодарен! :wink: :wink:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.09.2006 (Вт) 15:18

Телепатов нет, так что показывай код.
Изображение

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 12.09.2006 (Вт) 15:36

Сам код очень длинный и по кускам вы его не поймете. Просто я посылаю данные через каждые 50 миллисекунд, но на удаленный комп они приходят через секунду, а мне необходимо, чтобы они приходили через каждые 50 миллисекунд... Делаю танки по сети, почто доделал! :lol:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.09.2006 (Вт) 15:43

Мечтать не вредно.
Данные придут тогда, когда придут.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.09.2006 (Вт) 15:48

tyomitch
Телепатов нет, так что показывай код.

Обижаешь :(
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.09.2006 (Вт) 15:50

Ну раз они таки есть, то... показывай код :)
Весь мир матрица, а мы в нем потоки байтов!

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 12.09.2006 (Вт) 17:21

Чем отсылаются?
Как получаются?
Пора уже всем хорошим людям собраться и убить всех плохих людей.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 12.09.2006 (Вт) 22:33

GB826 писал(а):Чем отсылаются?
Connection to the remote brain of the telepathist | Хакер
...
Ok.
Result: WinSock.SendData
Connection closed.
GB826 писал(а):Как получаются?
Connection to the remote brain of the telepathist | Хакер
...
Ok.
Result: WinSock_DataArrival()
Connection closed.
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 13.09.2006 (Ср) 0:18

Как ускорить:
попробовать принести компы друг к другу и соединить их прямым проводом. :)
А vvs_adm сломал Хакера :cry:
Если всё делать своими ручками, они скоро отвалятся !

13GHOST
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 305
Зарегистрирован: 09.01.2004 (Пт) 12:48

Сообщение 13GHOST » 13.09.2006 (Ср) 6:40

Может попробывать это через DirectPlay сделать? :oops:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.09.2006 (Ср) 7:19

Человек с обычным сокетом не может разобраться, какой DirectPlay?
Lasciate ogni speranza, voi ch'entrate.

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 18.09.2006 (Пн) 15:49

Я где-то видел тему про WinSock, не никак не могу найти вот что. Дело в том, что WinSock передает данные только тогда, когда процедура закончилась, а мне необходимо послыть данные, еще находясь в процедуре.
А вот код отправки через каждые 50 миллисекунд.
Код: Выделить всё
Private Sub MoveTank_Timer()
  Call PesokTank
  Call LedTank
    Select Case gBytTankGrad
      Case 1: If PT.Y > 0 Then PT.Y = PT.Y - gBytTankStep
      Case 2: If PT.X < 110 Then PT.X = PT.X + gBytTankStep
      Case 3: If PT.Y < 130 Then PT.Y = PT.Y + gBytTankStep
      Case 4: If PT.X > 0 Then PT.X = PT.X - gBytTankStep
    End Select
  Call BlockTank
  Call TankInTank
  Call MapRefresh
  WsTankNUM = WsTankNUM + 1
    If WsTankNUM = 41 Then WsTankNUM = 1
  WsTank(WsTankNUM).SendData (Chr$(PT.X) & Chr$(PT.Y) & Chr$(gBytTankGrad))
End Sub

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.09.2006 (Пн) 17:38

DoEvents? Sleep?
Изображение

Саша_ОР
Обычный пользователь
Обычный пользователь
 
Сообщения: 66
Зарегистрирован: 08.01.2006 (Вс) 19:48

Сообщение Саша_ОР » 21.09.2006 (Чт) 17:27

DoEvent мне помог вот в таком коде
В нем отправляется только последнее, но вставка DoEvent помогла отправить и те и те данные.
А как можно отправить пакет не выходя из главной процедуры?
Код: Выделить всё
Winsock1.SendData ("1")
Winsock2.SendData ("2")

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.09.2006 (Чт) 18:47

А, ещё один привязавшийся к конкретному разбиению TCP-потока по пакетам? Ай-яй-яй.

Нужны пакеты -- юзай UDP. Нужны пакеты с гарантией доставки -- придумай свой протокол поверх TCP. Хотя в игре гарантия доставки, наверное, ни к чему.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 110

    TopList