WEB开发网
开发学院手机开发Android 开发 Android socket编程 以非阻塞I/O服务器及Service为... 阅读

Android socket编程 以非阻塞I/O服务器及Service为例

 2010-08-22 04:49:00 来源:WEB开发网   
核心提示:之前采用聊天敲门的方式来介绍Socket通信,有两个不足的地方,Android socket编程 以非阻塞I/O服务器及Service为例,1.服务器会造成IO的阻塞即服务器一旦执行server.accept();将一直处于阻塞状态,直到有客户端请求连接,之后,Dos终端也进行连接,2.服务器端没有建立用户列表,无法将

之前采用聊天敲门的方式来介绍Socket通信,有两个不足的地方,

1.服务器会造成IO的阻塞

即服务器一旦执行server.accept();

将一直处于阻塞状态,直到有客户端请求连接。

2.服务器端没有建立用户列表,无法将某一客户端发送的消息广播给所有正在连接的客户端。

就好象是一个人自说自话,自己发送给客户端,自己接收服务器返回的消息。

基于以上两点,我改进了我的程序。

服务器端的改进:

1.通过采用socketchannel的非阻塞方式进行通信

2.建立Userlist客户端的哈希表,存储 已连接客户端的 ip地址和 服务器为其分发的socketchannel

客户端的改进:

1.采用Service 与服务器端进行连接,发送数据,实时监听服务器返回的数据。

流程图:

需要改进的地方

服务器端:

1.当一个客户端断开连接以后,另一个客户端在收到消息之前也断开连接,而此时服务器正在向客户端发送消息,

因此,服务器的Thread.sleep时间不能太长,但也不能太短,因为考虑到服务器的负荷问题。

2.服务器容错处理机制需要改进。

客户端:

1.将Notificationbar改为其他更为直观方式刷新显示。

2.容错处理机制的处理。

下面是效果图:

服务器端:

dos客户端:

Android客户端:

效果图的意思是,Android的客户端通过绑定Service与服务器端进行了连接,并发送消息。服务器向所有正在连接的客户端广播消息。

之后,Dos终端也进行连接,并发送消息,服务器接到消息后向所有正在连接的客户端广播消息(其中包括在线的android手机)

1 2 3 4 5 6  下一页

Tags:Android socket 编程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接