Socket问题?求教高手拭指点

wsqwang884 2005-04-27 04:23:21
我有一个记录:

TMyMsg=record
Msg:Cardinal;
MsgText:String;

现在我想用

ClientSocket1.Socket.SendText();

来发送这个记录体,会报错,不能这么写,我想请问的是,怎么样写才能发送这个记录

请高手多多指教,最好有源码,谢谢!
...全文
141 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsqwang884 2005-04-29
  • 打赏
  • 举报
回复
感谢各位仁兄的帮忙

任务已经解决,

再次,谢谢大家的支持和帮助!
xiaoqiang123 2005-04-28
  • 打赏
  • 举报
回复
楼上的说清楚啊!!

我来说两句,未经调试,原理和发短信差不多,发送一个包过去的.说个思路吧,但我用的是WINSOCK方式:
hSocket := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); ////创建socket
If hSocket = INVALID_SOCKET Then
Begin
WSACleanup;
Log_S:='Socket() Fail';
Synchronize(Write_Log);
Exit;
End;


Send(sSocket,TMyMsg结构,SizeOf(TMyMsg结构),0);



chijingde 2005-04-28
  • 打赏
  • 举报
回复
用sendbuffer
loskill 2005-04-28
  • 打赏
  • 举报
回复
sendtext用来传一些简单的字符窜,一般用在无堵塞模式中
sendbuffer用来传记录和文件流,一般用在堵塞模式中
你应该用sendbuffer
wsqwang884 2005-04-27
  • 打赏
  • 举报
回复


老大,我试了,可以,但是在服务端要对Sl.Text进行分解啊。
有没有不进行分解,直接在服务器端接收这个结构体就可以了???

就好像:
一个字符串比如:S:String='kk';
那么用:ClientSocket1.Socket.SendText(S);就可以发送出去了,
而服务器只需要:s:=ClientSocket1.Socket.ReceiveText;就能接收客户端发过来的消息
不需要分解就可以直接用这个结构体啊?
godear 2005-04-27
  • 打赏
  • 举报
回复
同意楼上 sxtdxvb(大傻瓜)
sxtdxvb 2005-04-27
  • 打赏
  • 举报
回复
我最近在搞这个!

ClientSocket1.Socket.SendText();

()中需要传递一个字符串变量的或者一个字符串常量。

例如:ClientSocket1.Socket.SendText('Hello World');

对于你的问题,我是这么解决的(仅供参考)

procedure TFrmUpDateFriendGroup.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
var
SL:TStringList;
begin
SL := TStringList.Create;
try
SL.Append('1');
SL.Append('这是1号消息');
ClientSocket1.Socket.SendText(Sl.Text);
finally
SL.Free;
end;
end;

然后在Server端,动态生成SL(TStringList),并通过SL.String[0],SL.String[1] 来访问,即可。
wsqwang884 2005-04-27
  • 打赏
  • 举报
回复

我的基础很差哈。。。望各位老大见谅。。。。

是不是我的问题,没说清楚啊?
wsqwang884 2005-04-27
  • 打赏
  • 举报
回复
我的目的是将
TMyMsg=record
Msg:Cardinal;
MsgText:String;
这个结构体发送到服务器。
服务根据Msg来判执行什么方法或过程
比如:
my:TMyMsg;
my.Msg:=2000;
my.MsgText:='192.168.0.127';
把my这个结构体发送出去,服务器能够接收到这个结构体,就可以根据结构体内的设置进行判断并完成相应的操作。
----------------------------------
一个字符串比如:S:String='kk';
那么用:ClientSocket1.Socket.SendText(S);就可以发送出去了,
而服务器只需要:s:=ClientSocket1.Socket.ReceiveText;就能接收客户端发过来的消息
wangbao20001766 2005-04-27
  • 打赏
  • 举报
回复
INI文件,你之读取头信息就可以了
wsqwang884 2005-04-27
  • 打赏
  • 举报
回复
这跟用ADO或BDE无关,

这只是发送一个消息出去
fanyons 2005-04-27
  • 打赏
  • 举报
回复
你用的什么连接方式?ADO? BDE?
wsqwang884 2005-04-27
  • 打赏
  • 举报
回复
up

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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