连接到android上的ip:port usb以太网适配器

连接到android上的ip:port usb以太网适配器,android,Android,我有一个HTC的,我根它。我用OTG电缆将usb以太网适配器连接到手机,并在手机上设置ip地址(eth0 192.168.9.1/24)。 然后我用以太网电缆将它连接到我的笔记本电脑,并设置我笔记本电脑上该子网的ip地址(192.168.9.2/24)。我可以从两侧ping(电话-->笔记本电脑和笔记本电脑-->电话) 然后我编写了一个android程序来监听端口(33333): 私有类SocketServerThread扩展线程{ 静态最终int SocketServerPORT=33333;

我有一个HTC的,我根它。我用OTG电缆将usb以太网适配器连接到手机,并在手机上设置ip地址(eth0 192.168.9.1/24)。 然后我用以太网电缆将它连接到我的笔记本电脑,并设置我笔记本电脑上该子网的ip地址(192.168.9.2/24)。我可以从两侧ping(电话-->笔记本电脑和笔记本电脑-->电话) 然后我编写了一个android程序来监听端口(33333):

私有类SocketServerThread扩展线程{
静态最终int SocketServerPORT=33333;
整数计数=0;
@凌驾
公开募捐{
试一试{
serverSocket=新的serverSocket(SocketServerPORT,50,deviceAddress);
socket=serverSocket.accept();
}
}
}
私有字符串getIpAddress(){
字符串ip=“”;
试一试{
枚举枚举enumNetworkInterfaces=NetworkInterface.getNetworkInterfaces();
while(enumNetworkInterfaces.hasMoreElements()){
NetworkInterface NetworkInterface=enumNetworkInterfaces.nextElement();
枚举Enumeration enumInetAddress=networkInterface.getInetAddresses();
while(enumInetAddress.hasMoreElements()){
InetAddress InetAddress=enumInetAddress.nextElement();
if(inetAddress.isSiteLocalAddress()){
ip++=“SiteLocalAddress:”+inetAddress.getHostAddress()+“\n”;
试一试{
deviceAddress=inetAddress.getByName(inetAddress.getHostAddress());
//DeviceAddressGroup=inetAddress.getAllByName(inetAddress.getHostAddress());
}捕获(未知后异常e){
e、 printStackTrace();
}
}
}
}
当我想用(telnet 192.168.9.1 33333)从笔记本电脑连接到手机的端口时,这是不可能的,telnet会等待超时

我开始故障排除:

1-在我的手机上使用telnet 192.168.9.1 33333终端模拟器,我可以连接到该端口

2-我用Wifi将手机连接到笔记本电脑,并且可以毫无问题地连接到端口33333

3-我想用Tcpdump在安卓eth0上捕获数据包。我在system/bin和system/xbin上复制Tcpdump。当我想在终端模拟器上执行Tcpdump时,我有权限出错!(我的手机是root,在运行该命令之前我使用“su”)

4-我在终端仿真器上使用netstat,它显示协议tcp6(::ffff:192.168.9.1)

我的问题:

1-以前有人遇到过这个问题,不能连接到以太网usb适配器上的端口吗

2-由于android上的协议是tcp6,是否有可能导致问题


3-任何人都知道在具有root权限的手机上使用tcpdump有什么问题吗?

关于问题2::ffff:x.x.x.x在ipv6上与ipv4兼容。不要为ipv4创建一个tcp/ip堆栈,为ipv6创建一个tcp/ip堆栈。android使用具有该兼容性的tcp/ip堆栈v6。因此,这不应该是问题的原因。有什么想法吗N3:我在android上找到了一个关于tcpdump的页面。我执行了以下步骤1-su 2-mount-o remount,rw/system 3-copy tcpdump on/system/bin 4-cd/system/bin 5-run tcpdump-vv-s0-w/sdcard/tcp.cap。在第5步之后,我发现了关于PIE的新错误。我在谷歌上搜索并找到了支持PIE的tcpdump版本。我关于tcpdump的问题解决了。最后我捕获了tcp包usb以太网上的et。我收到了连接到usb以太网上端口33333的请求,但android没有响应,并且在时间请求超时后!
 private class SocketServerThread extends Thread {
         static final int SocketServerPORT = 33333;
         int count = 0;
         @Override
         public void run() {
          try{
        serverSocket = new ServerSocket(SocketServerPORT,50,deviceAddress);
              socket = serverSocket.accept();
    }
  }
}


private String getIpAddress() {
    String ip = "";

     try {
         Enumeration<NetworkInterface> enumNetworkInterfaces =  NetworkInterface.getNetworkInterfaces();
        while (enumNetworkInterfaces.hasMoreElements()) {
            NetworkInterface networkInterface = enumNetworkInterfaces.nextElement();
            Enumeration<InetAddress> enumInetAddress = networkInterface.getInetAddresses();
            while (enumInetAddress.hasMoreElements()) {
                InetAddress inetAddress = enumInetAddress.nextElement();

                if (inetAddress.isSiteLocalAddress()) {
                    ip += "SiteLocalAddress: "+ inetAddress.getHostAddress()   + "\n";
                    try {
                         deviceAddress=inetAddress.getByName(inetAddress.getHostAddress());
                        //  deviceAddrgroup=inetAddress.getAllByName(inetAddress.getHostAddress());

                    }catch (UnknownHostException e){
                        e.printStackTrace();
                    }

                }
            }
        }