通常我们交互除了P2P等协议,大多数都是基于C/S架构的通信场景,比如FTP, HTTP, DNS等。但是再设一一些安全协议方案的时候通常包括多方服务器和用户。此时应该如何通信那?比如传递命令和传输密钥。
(1)Socket
一般情况下比如我们设计一个后端服务,包括多个服务器:数据库服务器,web服务器,文件服务器、缓存服务器等的通信,一般是通过socket来设计专门的通信协议,因为比较高效。比如MySQL,MS SQL等也都是有知名的专用端口号。这个场景大多是在一个内网中,所以通信效率一般没问题。
(1)大学毕业设计,我是采用socket编程来实现客户端与服务器之间的通信,所以当需要服务器之间通信的时候,我也采用了socke的方法,只不过请求的服务器变成了“客户端”。所以相当于各方既是C也是S。只不过主动发起的一方是C,被动监听的一方是S。
(2)Socket通讯简单的方法是发送方用1个固定连接发送(比如SMTP/POP3等),或发送方每个请求数据包新建一个连接发送(比如PHP/Ruby连MySQL)。
(2)Http
服务器和服务器直接同样可以用HTTP,特别现在最常用的RESTful风格的通信方式(webserivces )。这时通信的时候就不需要浏览器了,比如服务器A可以使用curl系列命令向服务器B发出HTTP请求,获取数据,格式可以用通用的JSON或XML。也可以用java自带的HttpURLConnection,或者Apache的HttpClient等Http客户端来实现。当然底层还是通过Socket实现。