我正在尝试学习如何在java中使用套接字 我输入了 Tutorials point 中的示例但我无法让它工作(套接字客户端示例)。 我所做的唯一更改是,我没有从传入的 args 中获取端口和主机名,而是对端口进行硬编码并获取本地主机。我的代码如下
import java.net.*;
import java.io.*;
public class GreetClient
{
public static void main(String [] args)
{
InetAddress lHost=null;
try { lHost = InetAddress.getLocalHost(); }
catch(Exception e) { System.out.println("Local Host Error");}
int port = 1234;
try
{
System.out.println("Connecting to " + lHost + " on port " + port);
Socket client = new Socket(lHost, port);
System.out.println("Just connected to " + client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("Hello from " + client.getLocalSocketAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
我收到的错误是:
Connecting to Bridgets_laptop/192.168.56.1 on port 1234
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
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:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
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:241)
at GreetClient.main(GreetClient.java:27)
有什么想法我哪里出错了吗?
最佳答案
“连接被拒绝”部分听起来像是您的防火墙阻止您自己的应用程序访问 Socket1234,或者您尚未打开 ServerSocket 1234 进行连接。
你可以连接到ServerSocket吗
telnet 127.0.0.1 1234
如果您使用Windows?
关于sockets - 套接字客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27404283/