中国开发网: 论坛: 程序员情感CBD: 贴子 407768
pcplayer
不难。问题是你没描述清除你的应用的结构。几个原则:
1. 作为服务器端,对于一个 tcp 端口,你当然只能打开一次。不可能有多个线程去同时打开。

2. 作为客户端,假设你要访问对方的 80 端口,当然可以多个线程同时去。只不过这时候每个线程占用的本地端口肯定是不一样的。

3. 作为服务器端,如果你要同时处理来自多个客户的数据,你可以参考一下 Indy Tcp 带的例子代码。

4. 作为服务器端,如果要用多个线程同时处理来自不同客户端的数据,你那处理数据的多个线程肯定没有办法同时打开一个监听端口(假设你要处理客户端对你的80端口的访问,假设是一个WEB SERVER),那么,你可以参考 Indy Web Server 的写法。如果是我来做,我恐怕要为每个客户端开辟一个数据缓冲区,监听80端口的线程根据客户端的IP/PORT的不同,把接收到的数据丢进不同的缓冲区,然后处理客户数据的线程再去数据缓冲区里取数据出来处理。当然,这里就涉及到几个线程要同时存取一个数据缓冲区的问题了,自然就是线程的加锁、同步之类的操作了。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录