Socket、ServerSocket的基本使用方法。
时间: 2024-02-05 14:13:40 浏览: 26
Socket是一种通信协议,可以在不同的计算机之间进行数据通信。而ServerSocket则是在服务器端监听客户端的连接请求,一旦有客户端连接,就可以创建一个新的Socket与该客户端进行通信。
基本使用方法如下:
1. 创建ServerSocket对象,并指定端口号。
```java
ServerSocket serverSocket = new ServerSocket(8888);
```
2. 循环监听客户端连接请求,接受客户端连接,并创建Socket对象。
```java
Socket socket = serverSocket.accept();
```
3. 使用输入输出流进行数据传输。
```java
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
```
4. 关闭Socket和ServerSocket对象。
```java
socket.close();
serverSocket.close();
```
完整的示例代码如下:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,并指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待连接...");
while (true) {
// 循环监听客户端连接请求,接受客户端连接,并创建Socket对象
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功,IP地址为:" + socket.getInetAddress().getHostAddress());
// 使用输入输出流进行数据传输
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
String message = new String(buffer, 0, len);
System.out.println("客户端发送的消息为:" + message);
// 向客户端发送消息
String replyMessage = "已经收到您的消息:" + message;
outputStream.write(replyMessage.getBytes());
outputStream.flush();
}
// 关闭Socket对象
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端的示例代码如下:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,并指定服务器IP地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
System.out.println("连接服务器成功!");
// 使用输入输出流进行数据传输
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入要发送的消息:");
String message = scanner.nextLine();
// 向服务器发送消息
outputStream.write(message.getBytes());
outputStream.flush();
byte[] buffer = new byte[1024];
int len = 0;
if ((len = inputStream.read(buffer)) != -1) {
String replyMessage = new String(buffer, 0, len);
System.out.println("服务器返回的消息为:" + replyMessage);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```