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