在java中,要让程序之间建立起通信的通道,可以通过ServerSocket和Socket这两个类中的方法实现。
在通信中,有两个角色:服务器和客户机。等着被连接的叫做服务器,主动去连接的叫做客户机,在其他方面,两者都相同,也就是说,在两者建立好之后,后面的代码就可以仿照着写,因为最终是要实现数据的传输嘛,客户机能做的,服务器当然也要能做。
下面就从建立服务器和客户机,结合代码进行介绍
一、服务器
服务器的建立使用ServerSocket这个类,通过查看api文档,可以看到这个类有4种构造方法。
1⃣️ServerSocket();
2⃣️ServerSocket(int port) ;
3⃣️ServerSocket(int port, int backlog);
4⃣️ServerSocket(int port, int backlog, InetAddress bindAddr) ;
在这些构造方法中,port为服务器开放连接的端口号,backlog为客户连接数的最大值,bindAddr为服务器指定连接对象的ip地址。其中,通过无参构造方法创建的对象,还需要使用bind()方法与指定的端口绑定(或者说是开放指定的那一个端口),那么有人就会想了,既然后续还需要与端口绑定,为什么还要弄这样一个无参数的构造方法,直接使用带参的构造方法不是更便捷吗?其实不然,通过无参的构造方法,可以让服务器在开放通信端口之前,先设置一些ServerSocket的一些属性,因为一旦服务器开放端口之后,就无法在进行设置。
public class ServerSocketDemo{
public static void mian(String[] args){
try{
ServerSocket ss = new ServerSocket(9999);//建立了一个开放9999端口的服务器
//在前面说了,服务器是等着被连接的对象。那么,就需要使用accept()这个方法来获取连接服务器的客户机对象
Socket client = ss.accept(