当我们开展Java网络编程时,我们首先需要了解的是基础的单向通信。
单向通信是指通信流只能在一条路径上单向发送的通信模式。例如,服务器发送数据到客户端,而客户端不能发送数据回服务器。在 Java 中,单向通信可以通过 Socket 和 ServerSocket 实现。
以下是实现单向通信的步骤:
- 创建一个ServerSocket对象,使用一个门牌号绑定到一个本地端口上:
ServerSocket serverSocket = new ServerSocket(portNumber);
- 你可以调用 accept() 方法,这将阻塞线程并等待来自客户端的连接:
Socket clientSocket = serverSocket.accept();
- 当连接成功后,你就可以从客户端Socket对象中读取数据:
InputStream input = clientSocket.getInputStream();
- 为了将数据发送给客户端,可以创建一个 OutputStream 对象:
OutputStream output = clientSocket.getOutputStream();
- 最后,确保在结束时关闭服务器Socket和客户端Socket:
clientSocket.close();
serverSocket.close();
这是一个简单的示例,演示了如何在Java中创建一个可接受客户端连接的简单服务器:
import java.net.*;
import java.io.*;
public class SimpleServer {
public static void main(String[] args) throws IOException {
int portNumber = 1234;
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
InputStream input = clientSocket.getInputStream();
OutputStream output = clientSocket.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
PrintWriter writer = new PrintWriter(output, true);
String line;
while ((line = reader.readLine()) != null) {
writer.println(line);
}
clientSocket.close();
serverSocket.close();
}
}
这是一个从客户端向服务器发送数据的示例:
import java.net.*;
import java.io.*;
public class SimpleClient {
public static void main(String[] args) throws IOException {
String hostName = "localhost";
int portNumber = 1234;
try (
Socket clientSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))
) {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + hostName);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " + hostName);
System.exit(1);
}
}
}
这就是如何在Java中使用单向通信进行基础网络编程的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java网络编程基础篇之单向通信 原创 - Python技术站