使用Java进行网络编程:Socket通信实例
在Java中,我们可以使用Socket类来进行网络编程中的Socket通信。以下是一个简单的实例,客户端和服务器端各部分:
客户端(ServerRequest.java):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
public class ServerRequest {
public static void main(String[] args) {
try {
// 创建Socket连接
Socket socket = new Socket("localhost", 1234); // 服务器IP和端口
// 获取输入流,用于读取数据
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())));
// 从输入流中读取数据并打印出来
String response = "";
while ((response = in.readLine()) != null) {
System.out.println(response);
}
// 关闭资源
socket.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器端(Server.java):
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 创建一个ServerSocket,用于监听客户端连接请求
ServerSocket serverSocket = new ServerSocket(1234); // 服务器端口
System.out.println("Server is listening on port 1234...");
while (true) { // 无限循环,等待客户端连接
// 获取一个Socket,与客户端建立连接
Socket socket = serverSocket.accept();
System.out.println("Client connected from address " + socket.getRemoteSocketAddress()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))); // 接收客户端数据
String response = "Server received your message: ";
while ((response = in.readLine()) != null) {
System.out.println(response);
// 这里可以根据实际需求处理接收到的数据
}
// 发送服务器响应给客户端
PrintWriter out = new PrintWriter(socket.getOutputStream(), true)); // 获取输出流,用于向客户端发送数据
out.println(response + "Your message has been processed by the server")); // 发送回应信息
out.flush(); // 必须调用flush以确保所有的输出被发送出去
socket.close(); // 关闭Socket连接
}
}
}
以上两个程序,一个客户端向服务器端发送数据,另一个服务器端接收到数据并返回响应。请确保在运行此示例时,你的计算机已经连接到网络并且没有防火墙等安全设置阻止连接。
还没有评论,来说两句吧...