我正在尝试创建一个客户端,使用java发送一个名为“Post”的对象。这是我的代码
package net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import base.Post;
public class BlogClient {
public static final String IP = "127.0.0.1";
public static final int port = 3021;
public static String host = "";
public static void main(String[] args){
try{
InetAddress addr = InetAddress.getByName("127.0.0.1");
host = addr.getHostName();
}catch(UnknownHostException e){
System.out.println("Shot");
System.exit(1);
}
try(Socket socket =new Socket(host, port);//open a socket
PrintWriter out =new PrintWriter(socket.getOutputStream(),true); //send to the server
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//echo from the server
BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in))//client input
){
String userInput;
//while( (userInput=stdIn.readLine()) != null ){
while( (userInput=stdIn.readLine()) != null ){
Post p = new Post(userInput);
out.println(p.toString());
out.flush();//needed, since the buffered may not be full.
System.out.println("echo:"+in.readLine());
}
}catch(UnknownHostException e){
System.err.println("Don't know about host"+ IP);
System.exit(1);
}catch(IOException e){
System.err.println("Couldnt get I/O for the connection to "+IP);
System.exit(1);
}
}
}
执行时,控制台说:无法获得连接到127.0.0.1的I / O。
有人可以告诉我为什么会抛出这个例外吗?
(PS:127.0.0.1是我学校的局域网IP)
答案 0 :(得分:0)
127.0.0.1是localhost。可以通过修改hosts文件来更改它。但在您的情况下,我们可以做一件事,我们可以检查是否存在代码问题或网络问题。
使用Windows cmd提示
telnet 127.0.0.1 3021 // 3021 is the port no.
如果空白屏幕出现意味着建立网络连接,如果你遇到一些例外,则表示存在网络问题。它可能是阻止请求的防火墙。