宽泛的说,一台电脑既当服务器端又当客户端在技术上没有任何问题:
1. 所谓的服务器端其实仅仅是运行而监听特定端口的程序,所谓客户端也仅仅是去访问特定端口的程序,只要电脑能同时运行这两个程序,就可以即当客户端又当服务器端
2. 此外现代操作系统还可以利用多种技术让程序和 端口/IP/域名 等进行绑定(端口复用),简单的来说,对于服务器端程序,可以假想为一个函数F,它除了调用功能的参数外,还有 端口/IP/域名 这些用于确定到底是哪个服务器处理程序的定位参数,这些参数不同,就可以保证对应处理的服务器不同。 具体比如nginx可以在同一台主机上通过 端口/IP/域名 等等绑定不同的处理流程(服务器端)。其实这样的区分还可以进一步扩展,比如你还可以添加一些自定的区别参数(信息比如MAC,甚至是自编号等等)。
这对于客户端来说,其实也有类似的处理。
当 外部网络数据在这样的环境中传递时,一个顶层的调度器(可以是服务器端自身,也可以是其他代理调度层)可以根据这些信息把任务数据导流到正确对应的处理程序中,完成正确的处理。