我想玩转 Java 网络 I/O 流和 API。我的网络上有一台笔记本电脑和一台 PC(我知道每个设备的 IP),它们通过 Netgear DG834 路由器连接。
在玩 Java 网络 I/O 流时,如何将我的笔记本电脑配置为“服务器”,将我的 PC 配置为“客户端”。
谢谢!
我想玩转 Java 网络 I/O 流和 API。我的网络上有一台笔记本电脑和一台 PC(我知道每个设备的 IP),它们通过 Netgear DG834 路由器连接。
在玩 Java 网络 I/O 流时,如何将我的笔记本电脑配置为“服务器”,将我的 PC 配置为“客户端”。
谢谢!
Java 网络的很大一部分是用套接字处理的。服务器是一个ServerSocket。客户端是一个 Socket。他们相互联系并相互交谈。这就是您应该从阅读这些对象的 Java API 开始的地方。
http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html
您正在寻找使用套接字的简单 TCP 通信。看看这个教程,它有你开始:http ://systembash.com/content/a-simple-java-tcp-server-and-tcp-client/
基本思想是让服务器监听某个端口:
String clientSentence;
String capitalizedSentence;
//server listes at port number
ServerSocket welcomeSocket = new ServerSocket(6789);
//server is running forever...
while(true) {
//... and is accepting connections
Socket connectionSocket = welcomeSocket.accept();
//receives string messages ...
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
//... and sends messages
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
客户端应该是这样的:
String sentence= "this is a message";
String modifiedSentence;
//client opens a socket
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//writes to the server
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
//communication is finished, close the connection
clientSocket.close();
您不需要 2 台 PC 来执行此操作。您可以通过配置 java 进程来侦听 2 个不同的端口,在同一台 PC 上执行此操作。