Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java网络IO服务器设置_Java_Networking_Io_Inputstream_Bufferedreader - Fatal编程技术网

Java网络IO服务器设置

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的地方 您正在

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

在处理java网络I/O流时,如何将笔记本电脑配置为“服务器”,将PC配置为“客户端”


谢谢

这样做不需要两台电脑。您可以在同一台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.
包。