delphi socket使用心得

本文介绍了如何在 Delphi 7 中使用 Socket 进行通信,包括接收消息、处理命令、发送反馈以及日志记录。程序创建了一个消息接收器,将接收到的命令保存到列表,然后通过定时器检查并处理命令。处理完成后,状态更新并通过 Socket 发送给客户端。
摘要由CSDN通过智能技术生成
<strong><span style="font-size:18px;color:#ff0000;">下面的代码中包含了一个消息接收器,当消息接收器收到消息后,将socket,收到的消息,状态,封装成对象,保存到tstringlist中,stringlist.strings[0]里面保存了对象的ID(也就是命令的序号,从1..X);然后放一个定时器,定时器1S中去查看命令列表;把第一条命令的stringlist.strings[0]设置为‘0’,如果定时器检查到第一条的这个标志是0,则退出,不处理。证明系统正在处理其中的一条命令。把这个命令发送给子的socketserver; 在clientread里读取数据,然后处理,处理完后,返回信息回去,证明这个命令处理完了,把处理的状态返回给消息发送器。然后调用命令对象里的socket发送给命令发送者,去掉第一条命令。   然后定时器检测到命令存在时,发送命令,设置状态。知道处理完所有的命令。</span></strong>

<pre name="code" class="delphi">procedure write_log(str: string);
var
  F: TextFile;
  mfile: string;
begin
  try
    //判断保存日志文件的目录是否存在
    if not DirectoryExists(ExtractFilePath(ParamStr(0)) + 'log') then
      MkDir(ExtractFilePath(ParamStr(0)) + 'log');

    //按日期及时间设定保存日志的文件名
    mfile := ExtractFilePath(ParamStr(0)) + 'log\' + formatdatetime('yyyy-mm-dd', now) + '.txt';

    AssignFile(F,mfile);
    if not FileExists(mfile) then
      Rewrite(F);//如果文件不存在,则创建一个新的文件,并写入
    Append(F); //追加写入
    Writeln(F,str);//写入并换行
    CloseFile(F);
  except
  end;
end;


 
procedure TfmDKGZT.DJsocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  sReceive, sDJBH: string;
  slReceive: TStringList;
begin
  // 如果需要做批发,uni_basedatabill里的Execute;重新打开单据上的监听端口;
  // 因为每张单据需要一个监听端口,再打开别的单据之前,请关掉别的端口;
  // 这个时候需要在每个命令中保存要打开的单据号。
  slReceive := TStringList.Create;
  sReceive :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值