我正在尝试按端口和主机名连接服务器 我找到一个程序但是当我试图运行它时会显示以下异常
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at sample.Echoclient2.main(Echoclient2.java:31)
Couldn't get I/O for the connection to: 127.0.0.1
Java Result: 1
这是我使用的代码。
public class Echoclient2 {
public static void main(String[] args) throws IOException {
String serverHostname = new String ("127.0.0.1");
if (args.length > 0)
serverHostname = args[0];
System.out.println ("Attemping to connect to host " +
serverHostname + " on port 10008.");
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket(serverHostname, 10008);
System.out.println("server name"+Inet4Address.getByName(serverHostname));
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
System.out.println("Connection accepted " +
echoSocket.getInetAddress() + ":" +
echoSocket.getPort());
} catch (UnknownHostException e) {
e.printStackTrace();
System.err.println("Don't know about host: " + serverHostname);
System.exit(1);
} catch (IOException e) {
e.printStackTrace();
System.err.println("Couldn't get I/O for "
+ "the connection to: " + serverHostname);
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
System.out.println ("Type Message (\"Bye.\" to quit)");
while ((userInput = stdIn.readLine()) != null)
{
out.println(userInput);
// end loop
if (userInput.equals("Bye."))
break;
System.out.println("echo: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
我需要什么:
1.我需要向服务器发送一些消息,并希望从服务器响应。假设我发送“我是stackoverflow的用户”,那么服务器应该给出任何响应,比如返回相同的String或以大写或其他方式转换。
有些问题:
1.我编写客户端Java文件,但是我是否需要编写服务器java文件
2.我们可以使用ip和端口发送请求
3.我们可以使用主机名吗?
4.任何echo服务器名称?我需要向此服务器发送消息以便知道响应
我尝试了服务器,java和client.java然后我得到了结果?这是我的解决方案。
答案 0 :(得分:3)
1. I write client Java File but whether i need to write server java file.
是的,您需要编写自己的服务器(如果服务器应满足某些独特要求)或连接到现有服务器。 “连接被拒绝”消息表示没有服务器正在您尝试连接的端口上运行。
2. Can we send request by using ip and port.
是
3. Can we use host name.
是。您需要IP或主机名以及端口。
4. Any echo server name? i need to send message to this server want to know response.
您可以在计算机上设置回显服务器,以便首先专注于对客户端进行编码。在端口7上定义了Standard Echo server。安装程序取决于您的操作系统环境 - 在Ubuntu Linux上,我必须安装xinetd
软件包并在/etc/xinetd.d/echo
中启用echo服务器。然后,您可以使用telnet
程序验证服务器是否正在运行:
andreas@ubuntu:~$ telnet localhost 7
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello
Hello
使用telnet连接到任何端口也是验证服务器是否正在运行且可访问的常用技术。根据您的问题中的示例,您可以使用telnet 127.0.0.1 10008
检查服务器是否在您指定的端口上运行 - 如果没有可用的服务器,您将获得与Java程序相同的connetion refused
。
5. I try both server,java and client.java then i got result? is this solution for me.
不确定您指的是哪个服务器和客户端。
其他一些参考资料:
答案 1 :(得分:1)
您还必须在本地主机中运行您的服务器程序。您收到此异常是因为您的计算机上的10008端口没有损坏。
一些问题:
我编写了客户端Java文件但我是否需要编写服务器java文件。
您可以编写服务器程序,也可以连接到远程服务器。在那里面 你应该在远程服务器上同时拥有ip和运行端口。
我们可以使用ip和port发送请求吗。
是您需要同时发送消息。
我们可以使用主机名。
如果您的计算机可以解析主机名,则可以执行此操作。其他您可以使用IP地址
任何echo服务器名称?我需要向此服务器发送消息以了解响应。
我不知道这个,需要在网上搜索。
我尝试了服务器,java和client.java然后我得到了结果?这是我的解决方案。
是