socket 通信 多线程的问题

xzwsun 2009-03-20 05:36:47
A 向 B 发请求 B 处理后再向 C端转发,收到C端请求后,再转发给A.

我属于B 端的代码。

问题是多线程,当收到C端的请求后,找不到 A端的 socket id,请求发不回去了。

请问该如何解决?


最好能提供一段例子

...全文
127 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadeluo 2009-03-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xzwsun 的回复:]
还有更好的方法吗?
最好能提供一段代码,非常感谢!
[/Quote]

上面不是已经给了例子了吗?
xzwsun 2009-03-26
  • 打赏
  • 举报
回复
还有更好的方法吗?
最好能提供一段代码,非常感谢!
kye_jufei 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jadeluo 的回复:]
用 TIdMappedPortTCP 实现起来比较容易, 例如:


Delphi(Pascal) code
procedure TForm1.FormCreate(Sender: TObject);
begin
IdMappedPortTCP1.DefaultPort := 8000; //侦听端口
IdMappedPortTCP1.MappedHost := 'Server_C'; //C的主机名或者IP地址
IdMappedPortTCP1.MappedPort := 9000; //C的服务端口
IdMappedPortTCP1.Active := True;
end;

procedure TForm1.FormClose(Sender: …
[/Quote]
支持
jadeluo 2009-03-23
  • 打赏
  • 举报
回复
用 TIdMappedPortTCP 实现起来比较容易, 例如:


procedure TForm1.FormCreate(Sender: TObject);
begin
IdMappedPortTCP1.DefaultPort := 8000; //侦听端口
IdMappedPortTCP1.MappedHost := 'Server_C'; //C的主机名或者IP地址
IdMappedPortTCP1.MappedPort := 9000; //C的服务端口
IdMappedPortTCP1.Active := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdMappedPortTCP1.Active := False;
end;

procedure TForm1.IdMappedPortTCP1Execute(AThread: TIdMappedPortThread);
begin
//转发之前进行处理的示例: 将接收到的数据加上回车和换行后转发给C
AThread.NetData := AThread.NetData + #13#10;
end;

xzwsun 2009-03-23
  • 打赏
  • 举报
回复
function TFormMain.ReceiveData(Athread: TIdMappedPortThread): Boolean;
{获取来自客户机的请求数据,将数据直接保存到Athread.NetData}
begin
with Athread do
begin
NetData:='';
result:=False;
try
Connection.ReadFromStack(true,-1,true);
NetData:=Connection.InputBuffer.Extract(Connection.InputBuffer.Size);
result:=true;
except
end;
end;
end;

这段代码是否可实现?

谢谢
xzwsun 2009-03-23
  • 打赏
  • 举报
回复
请问能提供一段代码吗?
preserve 2009-03-20
  • 打赏
  • 举报
回复
indy里有很多mapped的控件可以转发
僵哥 2009-03-20
  • 打赏
  • 举报
回复
TIdMappedPortTCP

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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