Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 25.11.2007, 14:17   #1
ilyano
 
Регистрация: 02.10.2007
Сообщений: 5
Репутация: 10
Восклицание 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, 15:50   #2
BOBAH13
Android Developer
Профессионал
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Адрес: Los Angeles, USA
Сообщений: 3,710
Репутация: 1457
По умолчанию

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

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

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

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

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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


22:38.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru