Задать вопрос
WizAlx
@WizAlx

Передать массив через Socket?

Уважаемые Хабрчане. Вопрос в следующем.

Нужно передать массив данных от ClientSocket к ServerSocket. Код, приведенный ниже, к сожалению, не работает, массив не передается. Прошу помочь исправить ошибки.



Клиентская часть:

procedure TForm1.IPBtnClick(Sender: TObject);<br>
begin<br>
  Client.Host:=Ip.Text;<br>
  Client.Address:=Ip.Text;<br>
  Client.Active:=true;<br>
  Buf[1]:=IdIPWatch1.CurrentIP;<br>
  Buf[2]:=IdIPWatch1.UnitName;<br>
  Client.Socket.SendBuf(Buf,SizeOf(Buf));<br>
end;<br>




Серверная часть:

<br>
procedure TForm1.ServerClientRead(Sender: TObject;<br>
  Socket: TCustomWinSocket);<br>
begin<br>
  server.Socket.ReceiveBuf(Buf,SizeOf(Buf));<br>
  Tree.Items.AddChild(TreeView1.Items.Item[0],Buf[1]) <br>
end;<br>




Отмечу заранее, что порт у ClientSocket и ServerSocket совпадает.
  • Вопрос задан
  • 6407 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Hint
Неправильно делаете. Передаваемые через сокет данные — это поток данных без конца и начала (не считая установки и закрытия соединения). Соответственно клиент и сервер должны как-то определять, что здесь закончилась одна строка, а здесь началась другая. Можно определять по нулевым байтам или же пересылать строки фиксированного размера. А можно придумать свой протокол. Здесь я у вас этого не вижу.

Что такое buf? Array of string?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Aporia Севастополь
от 50 000 до 100 000 ₽
Clain Лимассол
от 5 000 €