Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.03.2011, 21:28
Maxsept Maxsept вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 4
Репутация: 10
По умолчанию 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;
тоесть клиент или сервер ждёт пока ему чтото прийдёт и потом отправляет если напостой недождавшись приёма то приходит белеберда(пакета в посылке склееваються тоесть если всё время на сервак отправлять "1" то будет приходить "111111" или подобное), я знаю то что ето на максимум затормозит передачу, есть какието альтернативы , предложение , советы ?
Ответить с цитированием
  #2  
Старый 02.03.2011, 21:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

То, что пакеты склеиваются - неизбежно (имхо). Во всяком случае, даже когда я писал сервак на WinSock, не нашел способа избавиться от этого.
Но есть простая "защита": например, поставить в конце каждого пакета символ #1 или другой неиспользуемый. Тогда можно будет распознавать пакеты и разделять их.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 02.03.2011, 22:40
Maxsept Maxsept вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Ето нерешило проблему, даже хуже стало. Тогда все обьекты двигались с ужасными лагами, а теперь ети лаги + рывки.
Ответить с цитированием
  #4  
Старый 02.03.2011, 23:06
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Еще можно попробовать сделать все пакеты стандартного размера. тогда если пришло больше - значит это N пакетов (хотя может прийти и пол пакета, тогда надо поставить в буфер и ждать остатков)
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 03.03.2011, 22:47
mss mss вне форума
Новичок
 
Регистрация: 29.10.2010
Сообщения: 50
Репутация: 10
По умолчанию

> Ето нерешило проблему, даже хуже стало

У тебя была ошибка в программе.
Ты ее не исправил и добавил к ней новые ошибки.
Ответить с цитированием
  #6  
Старый 03.03.2011, 23:19
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

дк а не вариант структурированные данные прередавать

например:
Coord=record
x,y:integer;
end;

и через SendBuf их отправлять.
Я еще в древности, когда постигал азы сетевых приложений, слепил сетевые танчики. Все работало нормально. Плюс у меня еще передавались координаты боеприпасов.))
Ответить с цитированием
  #7  
Старый 09.03.2011, 23:03
Maxsept Maxsept вне форума
Прохожий
 
Регистрация: 06.12.2010
Сообщения: 4
Репутация: 10
Хорошо

Pilot_Red
спс биг, помогло!
считал сколько пакетов передаёться за 1 сек, когда я делал 30-60 пакетов, по совету Pilot_Red 2300 пакетов.
Ответить с цитированием
  #8  
Старый 09.03.2011, 23:45
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Рад помочь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter