我想实现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效果很好).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。