gpt4 book ai didi

java - 带有 Android 客户端 : connection timed out 的 Linux 服务器

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:16 25 4
gpt4 key购买 nike

我正在开发一个连接到用 Java 编程的服务器的 Android 应用程序。当我在 Windows 上测试服务器应用程序时,服务器和客户端正在按照编程进行通信。

现在我已经将实验转移到了 Linux Ubuntu OS 上。 Android 应用程序(客户端)能够发送字符串,但是当 Linux 上的服务器尝试将字符串发送到 android 时失败。它需要更长的时间并给出此错误:

Testing.NewJFrame$1 run
SEVERE: null
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
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.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:208)
at Testing.NewJFrame$1.run(NewJFrame.java:178)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

服务器端代码如下:

Socket clientSocket = null;
ServerSocket serverSocket = null;
String clientIP;
int port = 4447;

并且根据某些条件将触发以下内容:

System.out.println("Attempting connect to "+clientIP+" through "+ port);
Socket socket = new Socket(clientIP, port);
System.out.println("Connection made");
OutputStream output = socket.getOutputStream();
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(output)), true);
out.println(appName + " has been installed and launched in Background");
System.out.println("Message sent...");

但它停在“正在尝试连接......”这一行

客户端代码如下:

public void listenToServer(){
new Thread (new Runnable(){
@Override
public void run() {
try {
serverSocket = new ServerSocket(4447);
} catch (IOException e) {
e.printStackTrace();
}
while (true) {
try {
client = serverSocket.accept();
Scanner in = new Scanner(client.getInputStream());
.
.
.
.
.

请注意,这两个代码在 Windows 中都可以正常工作,但在 Linux Ubuntu 上却无法正常工作!

最佳答案

我想分享我几周前找到的答案,以防有人感兴趣。

我发现问题中的错误背后的原因是我正在使用的网络配置。我在大学的办公室工作,并通过允许这种 p2p 通信将消息发送到本地计算机而不是相反的方式来应用某种程度的安全性。所以我能够将消息从 android 发送到服务器,这基本上是我的桌面。后者通过隔离网络连接,以确保一定的安全级别。

很抱歉回来晚了,感谢你们分享了他们的观点

关于java - 带有 Android 客户端 : connection timed out 的 Linux 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com