| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > передача сложной структуры через сокеты |
| Автор: Vinnety 25.6.2003, 17:26 |
| Помогите! Как передать через сокет посредством SendBuf такую структуру: const kolvo_zap=100; type //------------------------------------------- TCode = longint; TData = double; TName = string[15]; TType_pack = string[15]; TDatas = packed record Code : Tcode; Data : Tdata; end; Tarr = array of Tdatas; TUser = packed record Name : Tname; Type_pack : Ttype_pack; Datas : TArr; end; //------------------------------------------- Например, я посылаю это так: var size,i : integer; begin size:=(4+8)*kolvo_zap+(15+1+15+1); for i:=0 to serversocket1.Socket.ActiveConnections-1 do serversocket1.Socket.Connections[i].SendBuf(user,size); end; А принимаю так (на клиенте такая же структура): procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var size,i: integer; begin size:=socket.ReceiveLength; setlength(user.datas,kolvo_zap); clientsocket1.Socket.ReceiveBuf(user,size); end; Но это не работает!!! Почему? |
| Автор: altarasjuk 25.6.2003, 17:39 |
| Что такое user? это должна быть текстовая переменная. И соответственно у тебя должны быть два метода для кодирования этого массива в текстовую строку и для соответствующего раскодирования. |
| Автор: stab 25.6.2003, 19:33 |
| если user это массив из TUser тогда размер того что нужно отправить: size:=SizeOf(TUser) * Length(user); а утебя: size:=(4+8)*kolvo_zap+(15+1+15+1); |