Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2007, 13:17   #1
ilyano
 
Регистрация: 02.10.2007
Сообщений: 5
Восклицание ServerSocket recievebuf и sendbuf

Добрый день.Подскажите пожалуйста как мне методом SendBuf передать число больше 255(т.е больше одного байта)?При попытке передать тип integer все равно передается однобайтное число.
Со стороны клиента:
Получение:
var
buf:integer;
begin
Socket.Receivebuf(buf,4);/Если я правильно понял:вторым параметром передается кол-во передаваемых байтов(для Integer четыре)
edit3.text:= inttostr(buf);/в edit3 вывожу полученное число
end;

Отправка:
var buf:integer;
begin
buf:=strtoint(edit2.Text);/в edit2 пользователь вводит необходимое для отправки число
ClientSocket1.Socket.SendBuf(buf,4) ;
end;

Со стороны сервера:
var
buf:integer;
begin
Socket.ReceiveBuf(buf,4);
edit1.text:= inttostr(buf);/вывожу полученое число
buf:=buf+5;/прибавляю 5 и отправляю обратно клиенту
ServerSocket1.Socket.Connections[0].SendBuf(buf,4);
end;
ilyano вне форума Ответить с цитированием
Старый 25.11.2007, 14:50   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Все верно. А с чего вы взяли что возвращается только один байт ? Случаем не с того что buf в пределе (0;255) ?
BOBAH13 вне форума Ответить с цитированием
Старый 25.11.2007, 15:34   #3
ilyano
 
Регистрация: 02.10.2007
Сообщений: 5
По умолчанию

Наверно я чего-то не понимаю...Взял с того что при такой отправке(которую я написал)числа с клиента большего 255(а предел integer много больше),принятое число на сервере в edit1 получается отправленное-255.Почему так?И как можно работать с большим числом?
Заранее спасибо.
ilyano вне форума Ответить с цитированием
Старый 25.11.2007, 16:26   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

наверное дело в параметре... кажется там должно идти send(@buf, sizeof(buf)); я просто не отслылал никогда таким образом. Поидеи проблем тут никаких не должно быть.
BOBAH13 вне форума Ответить с цитированием
Старый 09.11.2017, 17:47   #5
AzAtom
Новичок
Джуниор
 
Регистрация: 09.11.2017
Сообщений: 1
По умолчанию

Чем закончилось дело?
Если известно сколько именно байт должно прийти, то надо в цикле вызывать Socket.ReceiveLength и ждать, пока там не будет ожидаемого количества байт и затем читать.
AzAtom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Serversocket,clientsocket prizrak1390 Работа с сетью в Delphi 10 21.04.2009 16:04
Вопрос про ServerSocket и ClientSocket civic.qip Работа с сетью в Delphi 8 27.09.2008 02:04
Кто Етот ServerSocket ? combays Помощь студентам 5 24.08.2008 21:40
Socket.SendBuf\ResiveBuf SunKnight Работа с сетью в Delphi 7 13.06.2008 12:43
загадочные clietnsocket и serversocket! steck Работа с сетью в Delphi 5 16.08.2007 14:48