android网游开发之socket的简单设计和实现
2013-12-23 15:34
295 查看
转载: http://codingnow.cn/android/884.html
发表评论
阅读评论
2,479 人阅读
对于普通应用的网络模块一般使用http文本协议,在android开发中使用http协议比较简单,sdk已经做了很好的封装了,具体使用方法可以参考我的这篇博文。而在游戏开发中,可以结合使用http和socket,当然了http协议底层也是基于tcp协议的。http协议是无连接、无状态的,每次连接只能处理一个请求,然后就断了,而且发一个请求需要附加额外信息(请求行、请求头),每次请求都需要重新建立连接;使用socket的好处是更高效和省流量,建立一次连接后,只要不手动或者出现异常断开,就可以一直互相发送数据,而且是直接以字节的形式发送,不需要额外的附加信息,缺点就是难度加大了,需要服务端和客户端很好的配合,保证发送和读取时数据的顺序一致。本文通过一个简单的demo介绍开发android网游时socket的使用方法,主要包括:android客户端和一个简单的使用java实现的server端,实现客户端和服务端互相发送数据的功能。
1.客户端代码实现
首先创建一个Android应用,名称:AndroidSocketTest
然后分别创建4个文件:BytesUtil.java、BytesReader.java、BytesWriter.java、TCPCommunication.java,下面分别介绍这几个文件的用处和源码:
BytesUtil.java:包含了一些静态工具方法:基本类型和字节数组的相互转换,字符串和字节数组的相互转换,字节数组的赋值和大小重置,对输入流进行读取保存等。比较简单,下面直接看源码:
BytesReader.java:从服务端接收数据时使用,定义了一个字节数组类型的成员变量,用来保存从输入流中读取的数据。封装了一些从该字节数组中读取相应数据类型的函数,源码如下:
BytesWriter.java:向服务端发送数据时使用,跟BytesReader.java对应,也是把需要发送的数据保存到字节数组中,然后一次性发送给服务器。源码如下:
TCPCommunication.java:上面的三个类都是辅助工具类,是给它使用的,它负责socket的创建和连接服务器、读取和发送数据,以及通过Handler发送消息给UI线程更新界面显示数据。由于我们的目的是使用socket通信,所以去掉了很多代码,这里只是简单的建立一次连接,发送和接收完数据后就关闭连接了。源码如下:
MainActivty.java的代码比较简单,源码:
到此为止,Android客户端的代码已经全部完成了,记得给应用添加访问网络的权限哦:在配置文件中添加
2.服务端代码实现
服务端的代码比较简单,当然了,一般在实际的开发中,服务端和客户端不是同一个人写的,这里我就把客户端里的那几个工具类拿来直接用了。
创建一个java项目,然后把BytesReader.java、BytesWriter.java、BytesUtil.java三个文件拷贝到项目的包下,然后创建Server.java,功能比较简单,监听8888端口,然后等待客户端连接,接收和发送数据。源码如下:
现在验证一下,先启动Server,然后运行Android客户端应用,屏幕中间会出现TextView和一个button,TextView的内容是HelloWorld,点击button就会发送登陆信息给服务端,然后服务端返回数据显示到TextView上。下面分别是服务端的打印消息和客户端的显示截图。
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234052.png)
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234027.png)
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234040.png)
主要需要掌握基本数据类型和字符串跟字节数组的转换,然后按照指定的顺序发送。最重要的是要注意客户端和服务端从字节数组读取和往字节数组写入数据时的顺序要对应。
下面是源码链接:http://download.csdn.net/detail/zhoujianghai/4751981
android网游开发之socket的简单设计和实现
2012年11月9日 Alex Zhou发表评论
阅读评论
2,479 人阅读
对于普通应用的网络模块一般使用http文本协议,在android开发中使用http协议比较简单,sdk已经做了很好的封装了,具体使用方法可以参考我的这篇博文。而在游戏开发中,可以结合使用http和socket,当然了http协议底层也是基于tcp协议的。http协议是无连接、无状态的,每次连接只能处理一个请求,然后就断了,而且发一个请求需要附加额外信息(请求行、请求头),每次请求都需要重新建立连接;使用socket的好处是更高效和省流量,建立一次连接后,只要不手动或者出现异常断开,就可以一直互相发送数据,而且是直接以字节的形式发送,不需要额外的附加信息,缺点就是难度加大了,需要服务端和客户端很好的配合,保证发送和读取时数据的顺序一致。本文通过一个简单的demo介绍开发android网游时socket的使用方法,主要包括:android客户端和一个简单的使用java实现的server端,实现客户端和服务端互相发送数据的功能。
1.客户端代码实现
首先创建一个Android应用,名称:AndroidSocketTest
然后分别创建4个文件:BytesUtil.java、BytesReader.java、BytesWriter.java、TCPCommunication.java,下面分别介绍这几个文件的用处和源码:
BytesUtil.java:包含了一些静态工具方法:基本类型和字节数组的相互转换,字符串和字节数组的相互转换,字节数组的赋值和大小重置,对输入流进行读取保存等。比较简单,下面直接看源码:
服务端的代码比较简单,当然了,一般在实际的开发中,服务端和客户端不是同一个人写的,这里我就把客户端里的那几个工具类拿来直接用了。
创建一个java项目,然后把BytesReader.java、BytesWriter.java、BytesUtil.java三个文件拷贝到项目的包下,然后创建Server.java,功能比较简单,监听8888端口,然后等待客户端连接,接收和发送数据。源码如下:
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234052.png)
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234027.png)
![](http://codingnow.cn/wp-content/uploads/2012/11/20121109234040.png)
主要需要掌握基本数据类型和字符串跟字节数组的转换,然后按照指定的顺序发送。最重要的是要注意客户端和服务端从字节数组读取和往字节数组写入数据时的顺序要对应。
下面是源码链接:http://download.csdn.net/detail/zhoujianghai/4751981
相关文章推荐
- android网游开发之socket的简单设计和实现
- android网游开发之socket的简单设计和实现
- android网游开发之socket的简单设计和实现
- 深入浅出 - Android系统移植与平台开发(十) - led HAL简单设计案例分析
- 【原创】TCP Socket 简单练习 --- 线程池实现并发服务器 分类: Linux --- 应用程序设计 2014-12-25 13:59 50人阅读 评论(0) 收藏
- android实验三 简单聊天记录的设计与实现
- Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
- Android开发之一个简单的通讯录实现(源码)
- Android开发实现简单的观察者与被观察者示例
- Android开发中 简单实现属性动画
- Android实现socket简单通信
- 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- Android 蓝牙开发实例--蓝牙聊天程序的设计和实现
- Android游戏开发之2048游戏简单实现
- 【android开发】自定义数字软键盘的设计与实现(2)
- 【Android UI设计与开发】第18期:滑动菜单栏(三)SlidingMenu动画效果的实现
- android开发专题系列-一个简单的游戏的设计
- Android开发简单实现摇动动画的方法
- 移动开发 - Android - 实现两个页面(Activity)的简单跳转(Intent)
- android应用开发-从设计到实现 4-1 开发产品