|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Server/ClientSocket
есть приложение - игра(на двох сервер/клиент)
передаю информацию о местенахождении игрока и ботов пакет примерно такой- #p1#1#0#0#4#11#1#15#6#1#19#8#1#23#8#1#26#5#1#29#9# 1#22,3#9#1#22,3#9,01#1# передача и приём Сервак Код:
s:=Socket.Receivetext; memo2.Lines.insert(0,s); if copy(s,1,2)='#p' then begin //генерация нового пакета сервера ServerSocket1.Socket.Connections[0].SendText(s); //передача клиенту //обработка принятого пакета end; клиент Код:
s:=Socket.Receivetext; if copy(s,1,2)='#p' then begin //генерация пакета от клиент ClientSocket1.Socket.SendText(s); //передача серваку //обработка принятого пакета от сервака end; |
#2
|
||||
|
||||
То, что пакеты склеиваются - неизбежно (имхо). Во всяком случае, даже когда я писал сервак на WinSock, не нашел способа избавиться от этого.
Но есть простая "защита": например, поставить в конце каждого пакета символ #1 или другой неиспользуемый. Тогда можно будет распознавать пакеты и разделять их. jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Ето нерешило проблему, даже хуже стало. Тогда все обьекты двигались с ужасными лагами, а теперь ети лаги + рывки.
|
#4
|
||||
|
||||
Еще можно попробовать сделать все пакеты стандартного размера. тогда если пришло больше - значит это N пакетов (хотя может прийти и пол пакета, тогда надо поставить в буфер и ждать остатков)
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
|||
|
|||
> Ето нерешило проблему, даже хуже стало
У тебя была ошибка в программе. Ты ее не исправил и добавил к ней новые ошибки. |
#6
|
||||
|
||||
дк а не вариант структурированные данные прередавать
например: Coord=record x,y:integer; end; и через SendBuf их отправлять. Я еще в древности, когда постигал азы сетевых приложений, слепил сетевые танчики. Все работало нормально. Плюс у меня еще передавались координаты боеприпасов.)) |
#7
|
|||
|
|||
Pilot_Red
спс биг, помогло! считал сколько пакетов передаёться за 1 сек, когда я делал 30-60 пакетов, по совету Pilot_Red 2300 пакетов. |
#8
|
||||
|
||||
Рад помочь
|