首页 文章

Android套接字连接拒绝错误

提问于
浏览
2

我想在2个欺骗之间实现套接字连接,客户端不断向服务器发送GPS数据,我需要它们在新线程中运行,客户端发送第一个数据然后保持显示错误这样

03-18 16:35:11.805:E / Client运行:(8163):java.net.ConnectException:无法连接到/192.168.2.103(端口5678):连接失败:ECONNREFUSED(连接被拒绝)

这是客户端代码

public class Send implements Runnable{

    private boolean Connect = true;

    public void Connect(){
        Connect = true;
    }
    public void Disconnect(){
        Connect = false;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(Connect){
            try {
                SocketClient = new Socket("192.168.2.103", 5678);
                ObjectOutputStream oos = new ObjectOutputStream(SocketClient.getOutputStream());
                oos.writeDouble(GPSinfo[2]);
                //ObjectInputStream ois = new ObjectInputStream(SocketClient.getInputStream());
                //ois.readInt();
                oos.close();
                //ois.close();
            } catch (Exception e) {
                Log.e("Client run: ", e.toString());
            }
        }

    }

}

这是服务器代码

public class Receive implements Runnable{
    private boolean CanReceive = true;
    private double Data;

    public void Connect(){
        CanReceive = true;
    }
    public void Disconnect(){
        CanReceive = false;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub

        while(CanReceive){
            try {
                SocketServer = new ServerSocket(5678);
                Socket connectedSocket = SocketServer.accept();
                ObjectInputStream ois = new ObjectInputStream(connectedSocket.getInputStream());
                Data = ois.readDouble();
                DataText.setText("" + Data);
                //ObjectOutputStream oos = new ObjectOutputStream(connectedSocket.getOutputStream());
                //oos.writeInt(1);
                //ois.close();
                //oos.close();
            } catch (Exception e) {
                Log.e("Server run: ", e.toString());
            }

        }
    }

}

顺便说一下,这两个代码都是内部类,并添加了INTERNET权限 .

4 回答

  • -1

    很明显,这不是路由器防火墙相关的问题,因为你在同一个网络下,所以只有几个可能性:

    • 在服务器端的那个IP上没有监听该端口

    • 服务器端有一个阻止该连接尝试的本地防火墙

    • 您没有使用WIFI,因此您不在同一个网络下 .

    您应确保以某种方式打开该服务,这将有助于您调试罪魁祸首的位置 . 如果你建议使用一些调试工具来跟踪TCP数据包(我没有't know either what kind of operating system you use on the destination machine; if it'一些linux发行版, tcpdump 可能有帮助,在Win环境中 WireShark 工作得很好) .

  • 0

    这不是'数据传输错误' . 这是“拒绝连接”错误 . 这意味着要将数据传入或传出的服务器未在您指定的IP:端口上运行 .

  • 2

    尝试在开始连接之前终止adb服务 . 我遇到了类似的问题并在连接解决问题之前终止了adb服务 .

  • 3

    我有同样的错误 . 我只是使用ServerSocket,它运行良好 .

    ServerSocket socket = new ServerSocket(8888);

相关问题