【问题标题】:Socket only works when firewall turned off套接字仅在防火墙关闭时有效
【发布时间】:2015-09-15 02:13:30
【问题描述】:

我有一个简单的客户端-服务器脚本设置,它允许我从我的 android 设备向我的计算机发送消息。计算机服务器脚本是这样的 -

ServerSocket server = new ServerSocket(9000);
Socket socket = server.accept();
//read from socket to ObjectInputStream object
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
//convert objectinputstream to string
String message = (String)ois.readObject();
System.out.println("Message received: " + message);
ois.close();
socket.close();

而 android 代码是这样的(请注意,此代码作为异步任务运行)-

socket = new Socket( "10.69.23.11",9000);
//write to socket using Objectouputstream

oos = new ObjectOutputStream(socket.getOutputStream());

oos.writeObject(msg);

oos.close();

此代码有效,我在几周前对其进行了测试。但是从上周我从 java 1.7 升级到 1.8 后开始,这段代码不再有效。如果我完全关闭防火墙,此代码将再次开始工作。我明确添加了入站和出站规则,让端口 9000 作为 tcp 通过,但它仍然无法在防火墙开启的情况下工作。谁能帮帮我?

【问题讨论】:

  • 它不起作用是什么意思?是不是,有错误?如果是这样,那么您可以发布堆栈跟踪吗?还是在运行时它只是挂起而不做任何事情?
  • "...此代码不再有效。" - 这并不能真正帮助我们确定您的问题所在。它在什么时候不起作用?您是否在服务器上看到“收到的消息:”消息?

标签: java android sockets server


【解决方案1】:

原来防火墙以某种方式阻止了我的日食。我进入 Windows 控制面板,让微软诊断我一个解决方案。万万没想到,但他们正确地识别了它并通过绕过 Eclipse 的防火墙自动修复了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多