服务端:
procedure TcontForm.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var rStr,tStr,pStr: String;
DataThread: TClientDataThread;
begin
Try
//---创建线程
DataThread:=TClientDataThread.Create(True);
//---设置参数
DataThread.TargetList:=memRecv.lines;
rStr := ClientSocket.Receiveln;
//---根据字符判断是控制指令、常用口令还是文字会话
While rStr<>'' do
Begin
DataThread.ListBuffer.Add(rStr);
rStr:=ClientSocket.Receiveln;
End;
DataThread.ListBuffer.Add('');
//---唤醒线程
DataThread.Resume;
//---给客户端返回执
ClientSocket.Sendln('目标单位已接收。');
Except End;
end;客服端,按单位顺序,根据不同IP和端口给不同目标发送消息 For k:=1 to gDeptNum do
Begin
contForm.TcpClient1.RemoteHost:=gDeptCom[k].Ip;//目标IP
contForm.TcpClient1.RemotePort:=gDeptCom[k].Yd;//目标端口
Try
If contForm.TcpClient1.Connect then contForm.TcpClient1.Sendln(gSendMsg);
Application.MessageBox(PChar('成功发送!'),PChar('提示'),MB_OK);
Finally
contForm.TcpClient1.Disconnect;
End;
End;//For k:=1 to gDeptNum do问题:当gDeptNum为1时没问题,但多个的时候会出错,请各位高手帮帮忙,有什么解决办法吗?或者有其他可行的控件没?请附上源码,万分谢谢!
procedure TcontForm.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var rStr,tStr,pStr: String;
DataThread: TClientDataThread;
begin
Try
//---创建线程
DataThread:=TClientDataThread.Create(True);
//---设置参数
DataThread.TargetList:=memRecv.lines;
rStr := ClientSocket.Receiveln;
//---根据字符判断是控制指令、常用口令还是文字会话
While rStr<>'' do
Begin
DataThread.ListBuffer.Add(rStr);
rStr:=ClientSocket.Receiveln;
End;
DataThread.ListBuffer.Add('');
//---唤醒线程
DataThread.Resume;
//---给客户端返回执
ClientSocket.Sendln('目标单位已接收。');
Except End;
end;客服端,按单位顺序,根据不同IP和端口给不同目标发送消息 For k:=1 to gDeptNum do
Begin
contForm.TcpClient1.RemoteHost:=gDeptCom[k].Ip;//目标IP
contForm.TcpClient1.RemotePort:=gDeptCom[k].Yd;//目标端口
Try
If contForm.TcpClient1.Connect then contForm.TcpClient1.Sendln(gSendMsg);
Application.MessageBox(PChar('成功发送!'),PChar('提示'),MB_OK);
Finally
contForm.TcpClient1.Disconnect;
End;
End;//For k:=1 to gDeptNum do问题:当gDeptNum为1时没问题,但多个的时候会出错,请各位高手帮帮忙,有什么解决办法吗?或者有其他可行的控件没?请附上源码,万分谢谢!
解决方案 »
- AdoQuery刷新怪现象,请教各位仁兄
- 登陆问题?在线等。。解决就给分
- 如何获得form中的当前焦点?怎样作?谢谢
- 这样的效果如何实现? 关于INI文件操作
- 在学习devexpress系列后,总结的3大问题,希望大家能解决!
- TShellTreeView和TShellListView怎样实现鼠标拖动文件复制或移动?
- d5打开D4的程序,报Error Creating Form:发生意外错误!可是在NT下的D5就不会,98下就会,为什么呢?怎么回事啊?
- 如何对RichEdit的文本实现向前查找?
- 300分!谁有比较好的既可以做Server又可以做Client的Internet共享管理软件呀?
- 在Delphi中怎样实现VB中的RGB函数,谢谢!
- 关于tlistview自绘和spy4win的问题,能否勾引出来ccrun哪?
- jsp如何获得图片的创建时间?
For k:=1 to gDeptNum do
Begin
//---创建动态组件
gClientNum:=high(tcpCent)+1;
SetLength(tcpCent,gClientNum+1);
//---设置组件参数并执行动作
tcpCent[gClientNum]:=TTcpClient.Create(Self);
tcpCent[gClientNum].Name:= 'tpCnt'+IntToStr(gClientNum)
tcpCent.RemoteHost:=gDeptCom[k].Ip;//目标IP
tcpCent.RemotePort:=gDeptCom[k].Yd;//目标端口
Try
If tcpCent.Connect then tcpCent.Sendln(gSendMsg);
Application.MessageBox(PChar('成功发送!'),PChar('提示'),MB_OK);
Finally
tcpCent.Disconnect;
tcpCent.Destroy;
End;
End;//For k:=1 to gDeptNum do