Java网络IO服务器设置
我想尝试一下Java网络I/O流和API。我的网络上有一台笔记本电脑和一台PC(我知道每个设备的IP),通过Netgear DG834路由器连接 在处理java网络I/O流时,如何将笔记本电脑配置为“服务器”,将PC配置为“客户端”Java网络IO服务器设置,java,networking,io,inputstream,bufferedreader,Java,Networking,Io,Inputstream,Bufferedreader,我想尝试一下Java网络I/O流和API。我的网络上有一台笔记本电脑和一台PC(我知道每个设备的IP),通过Netgear DG834路由器连接 在处理java网络I/O流时,如何将笔记本电脑配置为“服务器”,将PC配置为“客户端” 谢谢 这样做不需要两台电脑。您可以在同一台PC上通过配置java进程来监听两个不同的端口来实现这一点。大部分java网络都是通过套接字处理的。服务器是一个服务器套接字。客户端是一个套接字。他们互相联系和交谈。这就是您应该开始阅读这些对象的JavaAPI的地方 您正在
谢谢 这样做不需要两台电脑。您可以在同一台PC上通过配置java进程来监听两个不同的端口来实现这一点。大部分java网络都是通过套接字处理的。服务器是一个服务器套接字。客户端是一个套接字。他们互相联系和交谈。这就是您应该开始阅读这些对象的JavaAPI的地方
您正在寻找使用套接字的简单TCP通信。看一看本教程,它为您提供了所有的开始: 基本思想是要有一个在某个端口侦听的服务器:
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();
谢谢你的回复!非常有用。另一个问题:是否需要在“服务器”上配置特殊的文件命名约定?或者仅仅是在服务器和客户机上从IDE(如eclipse)运行这两个脚本的问题?此外,对于“Localhost”,我宁愿在本地网络(如192.168.0.3)上键入笔记本电脑的IP,这是否适用于以下行:Socket clientSocket=new Socket(“192.168.0.3”,6789)//在IP 192.168.0.3(服务器)的本地网络上打开与笔记本电脑的连接。我真的不理解你的问题。但这可以在同一台计算机(即本地主机)上运行,也可以在不同的计算机上运行(然后提供IP,例如192.168.0.3)。端口号始终是必须的。java服务器端应用程序是否有特定的文件夹/文件命名约定?或者您只是在服务器上运行带有IDE的服务器端代码,它会自动侦听给定端口的任何输入。与客户端相同,只需通过Eclipse之类的IDE运行应用程序,甚至不需要Eclipse IDE。就这么简单。没有额外的库,什么都没有。这是每个JDK/JRE附带的纯java
java.net.
包。