Android套接字连接被拒绝错误

我想实现2个欺骗之间的套接字连接,客户端继续向服务器发送GPS数据,并且我都需要在新线程中运行这两个客户端,客户端首先发送一个数据,然后保持显示错误,例如

03-18 16:35:11.805: E/Client run:(8163): java.net.ConnectException: Failed to connect to /192.168.2.103 (port 5678): connect Failed: ECONNREFUSED (Connection refused)

这是客户代码

    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权限.

解决方法:

显然,这不是路由器防火墙相关的问题,因为您位于同一网络中,因此只有几种可能性:

>在服务器端该IP上的该端口上没有监听
>服务器端有一个本地防火墙阻止了该连接尝试
>您没有使用WIFI,因此您不在同一网络中.

您应该确保可以通过其他方式打开该服务,这将有助于您调试问题的出处.如果您已完成此操作,建议您使用一些调试工具来跟踪TCP数据包(我不知道您在目标计算机上使用哪种操作系统;如果是Linux发行版,则tcpdump可能会有所帮助, Win环境中的WireShark效果很好).

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...