一个关于ClientSocket的问题

ghostwife 2004-03-17 05:39:22
ClientSocket.Socket.SendBuf(buf,len)
在这个好数中buf该用什么类型啊
如果我要一次发送两个记录变量中的值该怎么组合到buf中去呢?
比如:
msg_head 和 msg_body 是两个记录类型 ,我要一次发送这两个变量中的值该怎么做呢?

同样我在接收的时候要对接收的数据做字节分析,该用什么样的类型来处理
...全文
119 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostwife 2004-03-17
  • 打赏
  • 举报
回复
Delphi、C/C++、Visual Basic数据类型的对照

Delphi、C/C++、Visual Basic数据类型的对照
================================================================================
变量类型 Delphi C/C++ Visual Basic
8位有符号整数 ShortInt char --
8位--符号整数 Byte BYTE,unsigned short Byte
16位有符号整数 SmallInt short Short
16位--符号整数 Word unsigned short --
32位有符号整数 Integer,Longint int,long Integer Long
32位--符号整数 Cardinal,LongWord unsigned long --
64位有符号整数 Int64 _int64 --
4字节浮点数 Single float Single
6字节浮点数 Real48 -- --
8字节浮点数 Double double Double
10字节浮点数 Extnded long double --
64位货币值 currency -- Currency
8字节日期/时间 TDateTime -- Date
16字节 variantVariant, VARIANT Variant(注), Variant(缺省)
OleVariant,TVarData OleVariant(注)
1字节字符 Char char --
2字节字符 WideChar WCHAR --
固定长度字节的字符串 ShortString -- --
动态字符串 AnsiString AnsiString(注) String
以Null结束的字符串 PChar char* --
以Null结束的宽字符串 PWideChar LPCWSTR --
动态2字节字符串 WideString WideString(注) --
1字节布尔值 Boolean,ByteBool (任何1字节数) --
2字节布尔值 WordBool (任何2字节数) Boolean
4字节布尔值 BOOL,LongBool BOOL --
================================================================================



ghostwife 2004-03-17
  • 打赏
  • 举报
回复
有CopyMemory 类似这个函数
就是内存拷贝函数吗

我必须消息头跟消息体一起发送才行
ghostwife 2004-03-17
  • 打赏
  • 举报
回复
使用这个sizeof(msg_head)在不同语言之间回有问题的

我的服务端是用vc写的
insert2003 2004-03-17
  • 打赏
  • 举报
回复
服务端用同样的接构接收
insert2003 2004-03-17
  • 打赏
  • 举报
回复
这样的,你应该定议一个数据包,
就是定义一个大的记录类型,将这两个记录类型全包话进去,
ClientSocket.Socket.SendBuf(buf,len)
buf为你定义的结构名

这样吧,写一个简单的东东
声明:

type
msg_head = record
......
end;

msg_body = record
......
end;

structclient = record
head :msg_head ;
body :msg_body;
end;


发送:
var
sendclient :structclient ;

sendclient.head....... := ......
......

socket.sendbuf(sendclient,sizeof(structclient));


aiirii 2004-03-17
  • 打赏
  • 举报
回复
buf:當成一個數組,
如:
buf: array[0..2047] of byte;
然後, 你的
两个记录类型

CopyMemory 之類的, 將內容寫到 buf 中就可!
耙子 2004-03-17
  • 打赏
  • 举报
回复
buf 就是一个数组,

你发两次不就行了
ClientSocket.Socket.SendBuf(msg_head ,sizeof(msg_head));
.....

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧