最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方。在贴代码之前,还是要了解一下关于socket的基础知识。
Socket的基本概念
1.建立连接
当需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序这对其发出连接请求。这一点同电话系统类似——必须有一方拨打电话,而另一方必须等候电话连通。
建立连接的过程为:
(1)先在服务器端生成一个ServerSocket实例对象,随时监听客户端的连接请求。
(2)当客户端需要连接服务端时,相应地要生成一个Socket实例对象,并发出连接请求,其中host参数指明该主机名,port参数指明该主机端口号。
(3)服务器端通过accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,并生成所需的I/O数据流。
(4)客户端和服务器端的通信都是通过一对InputStream和OutputStream进行的,通信结束后,两端分别关闭对应的Socket接口。
2.连接地址
打电话时,呼叫方必须事先知道所需拨打的号码,而程序建立网络连接时,也同样需要知道地址或主机名称。
另外,网络连接还需要一个端口号(可以将其当作电话的分机号),连接到正确的主机之后,需要对该连接确认特定口令。
3.端口号
在TCP/IP系统中,端口号由16位二进制整数组成,即在0-65535之间。实际应用中,前1024个端口号已经预先定义为一些特定服务,因此一般不能使用,除非想同这些