Socket
- 是两台计算机之间通信的端点,是网络驱动提供给应用程序编程的一种接口、一套标准、一种机制
ServerSocket
- 用于创建服务器,创建完成后会绑定一个端口号
- 然后此服务器可以等待客户端连接
- 每连接一个客户端,服务器就会得到一个Socket对象,用于跟客户端进行通信
TCP 协议 的 C/S程序
-
需要用到两个类,来编写TCP协议的 CS程序
- ServerSocket 搭建服务器
- Socket 搭建客户端
-
注意:先创建服务器,再创建客户端连接
-
服务器搭建(需要throws IOException)
//搭建服务器(占用端口号)
ServerSocket server = new ServerSocket(55565);
//等待服务器连接
Socket socket = server.accept();
- 客户端搭建(需要throws IOException)
Socket socket = new Socket("localhost",55565);
- 常用交互方式
- 服务器
//搭建服务器(占用端口号)
ServerSocket server = new ServerSocket(55565);
//等待服务器连接
Socket socket = server.accept();
//获得输出流
OutputStream os = socket.getOutputStream();
//输出流转打印流
PrintStream ps = new PrintStream(os);
ps.println("欢迎连接服务器");
- 客户端
//客户端搭建
Socket socket = new Socket("localhost",55565);
//获得输入流
InputStream is = socket.getInputStream();
//将输入流转为字符流后转为缓存读取流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//读一行
String test = br.readLine();
System.out.println("客户端接收到消息:"+test);
- 在服务器中加入多线程
//搭建服务器(占用端口号)
ServerSocket server = new ServerSocket(55565);
while (true){
//等待服务器连接
Socket socket = server.accept();
//创建线程来实现交互
new Thread() {
@Override
public void run() {
try {
//注意 服务器先获取输入流,客户端就要先输出
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}