在Java中,可以使用Socket类创建一个Socket对象,语法如下:
Socket socket = new Socket(String host, int port);
- host:服务器主机地址,可以是IP地址或域名。
- port:服务器端口号。
例如:
// 连接本地9000端口
Socket socket = new Socket("127.0.0.1", 9000);
// 连接域名example.com的80端口
Socket socket = new Socket("example.com", 80);
创建Socket对象就实现了与服务器的连接,然后可以通过该Socket对象进行输入输出流的获取,以实现客户端和服务器端的数据通信。
例如:
Socket socket = new Socket("example.com", 80);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 读取服务器响应
byte[] b = new byte[1024];
int len = inputStream.read(b);
String content = new String(b, 0, len);
System.out.println(content);
// 向服务器发送请求
outputStream.write("GET / HTTP/1.1\r\n\r\n".getBytes());
所以,创建Socket对象的主要作用是:
- 根据服务器地址和端口号建立TCP连接。
- 获取输入输出流,用于客户端和服务器的数据通信。
- 封装通信细节,提供简单易用的API,方便我们实现客户端功能。
创建Socket时,主要需要关注的点有:
- 服务器地址必须正确,否则会导致Socket创建失败,抛出未知主机异常。
- 服务器必须开启监听端口,否则会导致Socket创建失败,抛出连接异常。
- 同一端口只允许一个Socket监听,否则后续Socket创建会失败。
- 创建多个Socket但没有关闭会导致资源泄露,需要及时关闭。
- Socket创建成功后要及时获取输入输出流,否则容易出现阻塞。
Socket知识点:
- Socket(host, port)构造方法的使用。
- 服务器地址和端口号的作用。
- 输入输出流的获取和使用。
- 可能出现的异常及其原因。
- 使用完毕后Socket的关闭。