【发布时间】:2011-04-27 20:45:41
【问题描述】:
是否可以编写一个既作为服务器又作为客户端的程序?假设我有程序 P 的三个实例:P1、P2 和 P3。
- 在一个用例中,P2 从 P1 请求文件。
- 当 P1 向 P2 提供文件时,P1 从 P3 请求文件。
- P3 将文件提供给 P1。 (此时,P3 可以从 P1 或 P2 上传/下载。)
从概念上讲,我应该能够做到 这通过在 每次请求进入时线程。 有不同的方法吗?
编辑:
我有一些初始代码允许我作为客户端从服务器请求文件(提供服务器端口号和文件名)。相同的代码还启动了一个服务器线程,该线程同时侦听传入的请求。因此,实际上,此代码库充当 Peer(客户端和服务器)。
但是,我现在的问题是在发出第一个文件请求后,代码在服务器部分永远循环,实际上不允许我作为客户端发出任何额外的请求。那么我的问题是:我可以在服务器侦听端口时保持套接字打开,而 不需要服务器无限循环吗?这样,我就可以在“后台”运行服务器,并能够根据需要向客户端发送命令。
【问题讨论】:
标签: java multithreading sockets p2p