一、Socket编程
在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。
二、案例
1.服务端
- ① 创建ServerSocket对象,绑定监听端口
- ② 通过accept()方法监听客户端请求
- ③ 连接建立后,通过输入流读取客户端发送的请求信息
- ④ 通过输出流向客户端发送相应信息
- ⑤ 关闭相关资源
1 package cn.kgc.sockettest.demo1;
2
3 import java.io.*;
4 import java.net.ServerSocket;
5 import java.net.Socket;
6
7 /**
8 * 服务端
9 *
10 * @author
11 * @create 2019-07-23 14:16
12 **/
13 public class server {
14 public static void main(String[] args) {
15 try {
16 ServerSocket serverSocket = new ServerSocket(8080);
17 System.out.println("服务器启动完成...监听启动!");
18 //开启监听,等待客户端的访问
19 Socket socket = serverSocket.accept();
20 // 获取输入流,因为是客户端向服务器端发送了数据
21 InputStream inputStream = socket.getInputStream();
22 // 创建一个缓冲流
23 BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
24 String info = null;
25 while ((info = br.readLine())!=null){
26 System.out.println("这里是服务端 客户端是:"+info);
27 }
28 //向客户端做出响应
29 OutputStream outputStream = socket.getOutputStream();
30 info = "这里是服务器端,我们接受到了你的请求信息,正在处理...处理完成!";
31 outputStream.write(info.getBytes());
32 outputStream.close();
33 } catch (IOException e) {
34 e.printStackTrace();
35 }
36 }
37 }
- ① 创建Socket对象,指明需要连接的服务器的地址和端口号
- ② 连接建立后,通过输出流想服务器端发送请求信息
- ③ 通过输入流获取服务器响应的信息
- ④ 关闭响应资源
package cn.kgc.sockettest.demo1;
import java.io.*;
import java.net.Socket;
/**
* 客户端
*
* @author
* @create 2019-07-23 14:17
**/
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",8080);
OutputStream outputStream = socket.getOutputStream();
String info = "你好啊!";
//输出!
outputStream.write(info.getBytes());
socket.shutdownOutput();
//接收服务器端的响应
InputStream inputStream = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
while ((info = br.readLine())!=null){
System.out.println("接收到了服务端的响应!" + info);
}
//刷新缓冲区
outputStream.flush();
outputStream.close();
inputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}