0

我想玩转 Java 网络 I/O 流和 API。我的网络上有一台笔记本电脑和一台 PC(我知道每个设备的 IP),它们通过 Netgear DG834 路由器连接。

在玩 Java 网络 I/O 流时,如何将我的笔记本电脑配置为“服务器”,将我的 PC 配置为“客户端”。

谢谢!

4

3 回答 3

1

Java 网络的很大一部分是用套接字处理的。服务器是一个ServerSocket。客户端是一个 Socket。他们相互联系并相互交谈。这就是您应该从阅读这些对象的 Java API 开始的地方。

http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html

于 2013-06-14T19:25:22.053 回答
1

您正在寻找使用套接字的简单 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(); 
于 2013-06-14T19:25:28.977 回答
0

您不需要 2 台 PC 来执行此操作。您可以通过配置 java 进程来侦听 2 个不同的端口,在同一台 PC 上执行此操作。

于 2013-06-14T19:21:51.090 回答