请指教:关于TServerSocket(50分)

  • 主题发起人 主题发起人 Juhao
  • 开始时间 开始时间
J

Juhao

Unregistered / Unconfirmed
GUEST, unregistred user!
  当Client与Server连接时,Server将建立一个专门的Socket连接与Client通信。
请问:如何取得Server端的这个Socket连接,从而可以通过线程来监控这个连接。
注意:通信采用的是非阻塞方式!
  谢谢你的参与!
 
佩服。竟然有用TServerSocket做项目的(而且是非阻塞连接),高手啊高手。
要知道TServerSocket用非阻塞方式要达到可以使用目的的代码量和对socket通讯机制的掌握度要求与直接用api建立socket连接并处理的没有任何区别。
因为TServerSocket只是一个server socket类控件的基类,它的主要用途是让你用来继承并生成你自己的可以使用的server socket控件的。

如果你一定要用他实现非阻塞,那么只能给你一些思路(给你一个这样的例子还不如直接用api实现的代码来得直观和容易呢),
设置Active := True;或者调用Open后你得手工写代码来获取client的连接请求(很抱歉,没有相关事件可以给你用),而方法有两种:
1、调用WSAAsyncSelect并注册FD_ACCEPT以能让client连接的请求能通过windows的消息传递给你,当然你得自己写消息处理代码并在其中accept它。
2、开个线程(或者愚蠢地阻塞住主进程),调用Select方法来等待客户端的连接请求,然后用accept方法建立连接
 
有个台北人写了一篇《winsock编程宝典》的文章,看一下吧
 
TServerSocket当然可以用非组塞了,只要安排的好,负荷小,速度也不是什么问题
 
如张无忌大侠所说,用非阻塞方式通过线程来监控Socket连接的确可以。
现在问题是:总是连接不上,特别是局域网的pc与Internet的pc的连接,
不知是什么原因?
 
后退
顶部