2013-05-15 17:45:50 xiabing082 阅读数 3771
  • Android项目实战:基于XMPP的即时通讯(IM)客户端...

    本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

    22299 人正在学习 去看看 李宁

android 客户端 通过发送http请求,访问后台tomcat(这个是放在笔记本电脑上,作为服务器端)

1. 我想使用真机来访问服务器(一直使用模拟器访问)

     想用手机数据线来建立与服务器端连接,这个是不行的,记住

     但是手机与笔记本电脑能够连上同一个局域网网段可以建立连接

  (在公司,  学校的局域网都可以的,电脑连上局域网后,直接启动tomcat,手机需要连上这个对应的无线局  域网即可),

   //模拟器使用
   public static final String BASE_URL = "http://10.0.2.2:8080/LoginDemo/";
   这里的10.0.2.2 针对模拟器的ip
  
  //真机使用
   public static final String BASE_URL = "http://10.28.51.91:8080/LoginDemo/";

  这里的 10.28.51.91 是自己电脑ip

 

2.遇到手机无法连接到tomcat问题时,肯定的说,只要在同一局域网一定能够访问,必须是url配对,谨记。

   看到网上有,手机端和电脑是在一个局域网中, 用其他牌子的android手机可以访问,但是用小米的就不行,

    这个没有试过,不知道是不是真的,连接中如果遇到问题跟 360软件是否开启没关系,应该要把电脑 防火墙关闭了试试。

2015-06-08 23:04:22 glorydream2015 阅读数 2802
  • Android项目实战:基于XMPP的即时通讯(IM)客户端...

    本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

    22299 人正在学习 去看看 李宁
每个Android模拟设备(后面简称AVD)都有自己独立的网络地址空间,它们之间是互相隔离的。
实际上AVD与当前调试的电脑所在的局域网也是隔离的,AVD可以通过当前调试PC转发,能访问局域网。
AVD的网络地址空间为10.0.2/24,其自身地址为10.0.2.15,PC的地址为10.0.2.2。
实际上,如果用adb shell(或者adb -s 设备名 shell)进入AVD的命令行模式,再使用getprop命令,可以看到
[net.eth0.gw]:10.0.2.2
也就是AVD使用PC作为网关,对目标地址为10.0.2/24地址空间以外的数据进行转发


但实际中有时会碰到比较头疼的事情。
比如运行AVD的PC机所在的局域网地址空间为192.168.0/24,自身的IP为192.168.0.23。现在想通过AVD给
192.168.0/24局域网发送UDP广播,像下面这样直接发肯定是不行的

String msg="Broadcast Message";
byte[] buffer=msg.getBytes();
InetAddress addr=InetAddress.getByName("255.255.255.255");
int port=12345;
DatagramPacket dp=new DatagramPacket(buffer,buffer.length,addr,port);
DatagramSocket ds=new DatagramSocket(port);
ds.send(dp);
这只会将广播发送到10.0.2/24地址空间里


为达到AVD发送广播到192.168.0/24地址空间的目的,需要另外运行一个程序专门用于数据转发。
首先在AVD里运行的Android程序,凡是需要广播的数据,都发送到PC机的IP上,即192.168.0.23,并规定一个
端口,比如11111.然后在PC机上单独写个程序,一接收到11111端口的数据,就转发到当前192.168.0/24
网段的广播地址。
关键部分代码如下

int port=11111;
DatagramSocket ds=new DatagramSocket(port);
DatagramPacket dp=new DatagramPacket(buffer,buffer.length);
int port_trans=12345;
InetAddress broadAddress=InetAddress.getByName("255.255.255.255");
while(!STOP_FLAG){
	try {
		ds.receive(dpReceived);
	}
	catch(SocketTimeoutException e){
		continue;	//time out
	}
	catch (IOException e) {
		e.printStackTrace();
		closeSocket();
		System.exit(0);
	}
	InetAddress addr = dpReceived.getAddress();
	System.out.println("Data Received,Host Address: "+addr.getHostAddress());
	//如果收到的数据是本机发出的,则将数据广播到12345端口
	if(addr.getHostAddress().equals(host)){
		try {
			ds.send(new DatagramPacket(dpReceived.getData(),dpReceived.getLength(),broadAddress,port_trans));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
这样,在运行Android程序之前,先运行这个后台程序,负责将数据广播到192.168.0/24网段。
局域网发送给AVD的数据可以通过AVD的端口映射解决。比如一般模拟器的端口为5554,用telnet连接到模拟器
telnet localhost 5554
然后运行redir命令就能进行端口映射操作
这个命令有三个比较常用的子命令
redir add udp:13579:24680 
//将本机13579端口映射到AVD的24680端口
即所有发送到本机13579端口的数据都将转发到24680端口上
redir del udp:13579
//移除映射关系
redir list
//列出映射关系



2019-02-08 16:08:52 qq_39830579 阅读数 838
  • Android项目实战:基于XMPP的即时通讯(IM)客户端...

    本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

    22299 人正在学习 去看看 李宁

最近写Android,将数据库放到本地服务器,同时真机调试,就需要使真机通过局域网访问pc并获取数据。

确保手机和pc处于同一个局域网中,关闭电脑的网络防火墙
并配置Apache,这里赋一个网址
http://blog.sina.com.cn/s/blog_90309ae10102wzsk.html

2015-11-04 16:13:17 gogmz 阅读数 699
  • Android项目实战:基于XMPP的即时通讯(IM)客户端...

    本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

    22299 人正在学习 去看看 李宁

应用如何在手机上访问本地电脑上的tomcat服务器,设置”localhost”或者”127.0.0.1”是不行的,在模拟器上将 ip设置为”10.0.2.2”(也可以设置为本地服务器的IP地址如本机:http://192.168.1.102)是可以访问的,但到真机上此方法行不通。

  真机连接方法:1.本地电脑搭建的服务器与手机共同连接到同一个局域网网络下,可以使用电脑开热点,让真机连上热点就在同一局域网了,我就是通过这样的方法。
  这里写图片描述
         2.服务器端需要关闭防火墙
          
这里写图片描述
          
          4.总结:其实在有无线局域网的情况下真机与模拟器连接本地服务端是一样的,唯一区别是真机连接到本地服务器需要关闭防火墙(本人就是没有关闭防火墙折腾了N个小时)。

感谢你的经验和问题分享

2015-01-14 11:19:10 Di_Sinr 阅读数 2855
  • Android项目实战:基于XMPP的即时通讯(IM)客户端...

    本课程使用asmack、openfire等开源Library和软件实现一款基于Android的即时通讯软件。该软件支持普通的文本聊天,文件传输、群聊等功能。并且自己用openfire搭建服务端,通过本课程的学习,学员完全可以自己搭建和编写一个完全属于自己的IM聊天系统。在局域网和Internet都可以,只要自己有一个可访问的服务器即可。

    22299 人正在学习 去看看 李宁

1.启动电脑上的tomcat服务器,然后测试 http://localhost:8080/test/index.jsp,如果能访问则服务器没问题。


2.找到电脑现在的ipv4地址,可以通过控制面板查看,也可以通过cmd-->ipconfig查看

3.测试  http://10.223.8.239:8080/test/index.jsp,这里的ip地址就是本机的ipv4地址(根据自己的IP修改),如果能访问,则说明通过本机ip能访问服务器。


4.通过360WiFi等能够共享的WiFi的工具共享WiFi(主要是做一个局域网,Android手机必须与本机在同一网段下。如果Android手机和电脑都连在同一个无线路由器应该也可以。),然后Android手机连接到这个WiFi。

5.打开Android手机浏览器,输入 http://10.223.8.239:8080/test/index.jsp

这样就可以实现Android真机与本地tomcat服务器通信了.....

没有更多推荐了,返回首页