Java中的Socket编程是一种网络通信方式,它允许应用程序通过网络进行数据交换。以下是一个简单的入门指南,帮助你了解如何在Java中使用Socket进行编程。
ServerSocket对象,绑定到一个特定的端口。accept()方法监听客户端的连接请求。accept()方法会返回一个Socket对象。Socket对象的getInputStream()和getOutputStream()方法获取输入流和输出流,进行数据传输。import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 12345; // 监听的端口号
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("服务器已启动,正在监听端口 " + port);
while (true) {
Socket socket = serverSocket.accept(); // 接受客户端连接
System.out.println("客户端已连接:" + socket.getInetAddress());
InputStream inputStream = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
OutputStream outputStream = socket.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream, true);
String message;
while ((message = reader.readLine()) != null) {
System.out.println("收到客户端消息:" + message);
writer.println("服务器已收到:" + message);
}
socket.close(); // 关闭Socket连接
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Socket对象,连接到服务器的IP地址和端口号。Socket对象的getInputStream()和getOutputStream()方法获取输入流和输出流,进行数据传输。import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String serverAddress = "localhost"; // 服务器IP地址
int port = 12345; // 服务器端口号
try (Socket socket = new Socket(serverAddress, port)) {
System.out.println("已连接到服务器:" + socket.getInetAddress());
OutputStream outputStream = socket.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream, true);
InputStream inputStream = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// 发送消息到服务器
writer.println("你好,服务器!");
// 接收服务器回复
String response;
while ((response = reader.readLine()) != null) {
System.out.println("收到服务器回复:" + response);
}
} catch (UnknownHostException e) {
System.err.println("未知主机:" + serverAddress);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端会发送一条消息到服务器,服务器接收到消息后会回复一条确认消息。
通过以上步骤,你可以初步了解Java中的Socket编程。随着学习的深入,你可以探索更多高级特性,如SSL/TLS加密、NIO(非阻塞IO)等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。