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 совпадает.
  • Вопрос задан
  • 6354 просмотра
Решения вопроса 1
@Hint
Неправильно делаете. Передаваемые через сокет данные — это поток данных без конца и начала (не считая установки и закрытия соединения). Соответственно клиент и сервер должны как-то определять, что здесь закончилась одна строка, а здесь началась другая. Можно определять по нулевым байтам или же пересылать строки фиксированного размера. А можно придумать свой протокол. Здесь я у вас этого не вижу.

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

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

Войти через центр авторизации
Похожие вопросы