如何实现一个 ClientSocket 与 多个 服务器端 通讯???

fxly 2004-04-30 12:02:50
因为涉及到多线程方面的问题,而且手头没有资料,所以请大家帮忙。

理论讲解 + 代码范例 = 最受欢迎!!!

UP有分!^_^
...全文
214 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
msw958789 2004-07-10
  • 打赏
  • 举报
回复
ADOQuery 控件可以通过主线程传递给子线程!子线程中添加构造函数,然后使用同步VCL可以实现的!
eastnofail 2004-06-17
  • 打赏
  • 举报
回复
你为什么要用vcl的socket控件呢?为什么直接用不用winsock sdk?
zcchm 2004-06-15
  • 打赏
  • 举报
回复
换一个思路,把多个服务器端换成ClientSocket, 这个ClientSocket换成ServerSocket
littlexidong 2004-06-14
  • 打赏
  • 举报
回复
你想干什么??
dovedrake 2004-06-11
  • 打赏
  • 举报
回复
长连接与否,与阻塞方式没有关系,纯粹取决于代码实现
joyzz 2004-06-11
  • 打赏
  • 举报
回复
关注
dovedrake 2004-06-11
  • 打赏
  • 举报
回复
在大一点的通信程序中,建立一百个客户端连接是很正常的,如果只打算用控件来做,我觉得不是很明智,因为控件的数量是在编写代码时设计好的(除非动态生成),如果以后你需要建立两百个连接,你还能手工再往上放100个clientsocket吗?
应该把这种连接相关的操作全部封装到一个类中,在实际需要时,通过一定条件来生成一个类的实例,从而实现一个连接(可以实现一套多线程管理之类的东东,来把所有实例都管理起来)。这样,你的程序的灵活性才会更大一些。至于类的编写,这就是你自己的功夫了,根据你的实际需要来定制吧。
deshun205 2004-06-09
  • 打赏
  • 举报
回复
我目前也在作这种工作。
设计的要求上可以连接200台左右的机器。
我也不知道,
hqylfy 2004-06-07
  • 打赏
  • 举报
回复
认为还是建立100个SOCKET
一个CLIENTSOCKET只能面对一个连接
xugeng 2004-06-06
  • 打赏
  • 举报
回复
可以用API来写
ssyqcwj 2004-06-06
  • 打赏
  • 举报
回复
关注!
fxly 2004-05-14
  • 打赏
  • 举报
回复
如果ClientSocket要与ServerSocket保持长久的连接,ClientSocket端用阻塞的方式,还是非阻塞的方式?

哪一种比较好?
kinglh 2004-05-12
  • 打赏
  • 举报
回复
帮你up
fxly 2004-05-08
  • 打赏
  • 举报
回复
TO FreeFice(庄鱼):

你的办法只适合查询一下Server端的状态的简单操作,如果同时实现信息交互,不但会慢的要命,而且必死无疑! :(
庄鱼 2004-05-08
  • 打赏
  • 举报
回复
我沒做具体测试,不过,从原理上说,仅仅是将你的机器作为一个服务器而已,而将访问服务器作为你的客户端。如果通信量不是很大的话,你这里的资源消耗应该会比较小。由于整个过程都处于静默状态,你实际上仅仅是接受对方服务器的数据。当你需要主动访问对方服务器时,则通过建立其它的临时连接将作业请求发出,然后断开该连接,等待对方将回应数据通过该机自己的连接方式将数据发送回来,这样做虽然会出现一些延时,但对网络资源整体消耗来说应该不会很大。
当连接已经完成时,你就可以通过直接回应相应客户端的方式向访问服务器提交你的查询,这样你这里仅仅需要建立一个各访问服务器的连接套接字的表,你需要向哪个服务器访问就访问相应的套接字即可。从理论上说,这样做没有什么问题,只要不是同时的处理,应该比建立n个连接经济的多。
yesry 2004-05-08
  • 打赏
  • 举报
回复
up

我只为分而来
fxly 2004-05-07
  • 打赏
  • 举报
回复
用VCL控件,同步的问题很闹心……
庄鱼 2004-05-07
  • 打赏
  • 举报
回复
你不能反过来吗?在你的机器上装一个TServerSocket!让它和一个TClientSocket配对工作。
先在自己的及其上激活server,设置好特殊的侦听端口,然后用client去轮寻100个server端,激活守候进程,向你的机器发送连接请求,你再试试看呢?
fxly 2004-05-07
  • 打赏
  • 举报
回复
而且要多个ClientSocket可以同时往数据库的表里面添加数据!

ADOQuery不支持多线程,只有通过 Synchronize()函数来控制了…… :(

哪位高手知道有没有更好的办法???
fxly 2004-05-07
  • 打赏
  • 举报
回复
To :weill(每天提一问,一天学一点)

就是要每个ClientSocket 都一直连着服务器,够恐怖吧 ?! :(
加载更多回复(6)

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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