C/S程序:客户端与服务器程序
本文是基于TCP协议的C/S程序。
一、使用流程
- 使用 ServerSocket 来搭建服务器
- 使用 Socket 来搭建客户端
- 两者使用 socket(套接字,通信端点)进行交流
二、ServerSocket
- 概念
用于创建服务器,创建完毕后,会绑定一个端口号,然后此服务器等待客户端连接,每连接一个客户端,服务器就会的得到一个新的Socket对象,用于跟客户端进行通信。 - 常用构造方法
- ServerSocket(int port)
作用是创建一个基于TCP/IP协议的服务器,并绑定指定的端口号,参数port的范围是:0-65535(建议1025-65535,因为前面的端口多数被其他知名软件占用了)
- ServerSocket(int port)
- 常用方法
- Socket accept();
等待客户端连接,此方法会导致线程阻塞,直到一个新的客户端连接成功,return Socket对象后,线程再继续执行 - OutputStream getOutputStream()
返回的是指向通信的另一端点的输出流。 - InputStream getInputStream()
返回的是指向通信的另一端点的输入流。 - void close();
释放占用的端口号,关闭服务器
- Socket accept();
- 示例程序
//创建服务器
ServerSocket server = new ServerSocket(55555);
System.out.println("服务器已启动");
//等待客户端连接
Socket socket = server.accept();
System.out.println("客户端已连接");
//输出流
OutputStream os = socket.getOutputStream();
//打印流
PrintStream ps = new PrintStream(os);
ps.println("欢迎连接服务器");
}
三、Socket
- 概念
两台计算机之间通信的端点,是网络驱动提供给应用程序编程的一种接口,一套标准,一种机制 - 常用构造方法
- Socket(String ip,int port)
创建一个套接字,并连接指定ip和端口号的服务器,ip是服务器的ip地址(本机ip通常为127.0.0.1),port是服务器的端口号
- Socket(String ip,int port)
- 常用方法
- OutputStream getOutputStream()
返回的是指向通信的另一端点的输出流。 - InputStream getInputStream()
返回的是指向通信的另一端点的输入流。 - void close()
关闭套接字
- OutputStream getOutputStream()
- 示例程序
//连接服务器
Socket socket = new Socket("127.0.0.1",55555);
//输入流
InputStream is = socket.getInputStream();
//缓存读取流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//读取服务器传递的消息
System.out.println("服务器发送过来的消息:"+br.readLine());
- 注意
获取输入输出流的操作,对于客户端与服务器来说是相对的。
客户端的输入流,输入的是服务器输出流输出的内容。
客户端的输出流,输出到了服务器的输入流中。
所以,一定要注意,客户端与服务器获取流的顺序必须是相反的,也就是一发一收。