n
架构选择
n
网络协议
n
连接方式
n
建立连接
n
相互发送数据
架构的选择
n
分为:
BS
(
Browser-Server
)和
CS(Client-Server)
架构手机网游。
1
、
BS
架构即(浏览器
-
服务器)架构,
BS
架构手机网游目前主要由手机
WAP(Wireless application Protocol
无线应用协议
)
浏览器实现,即基于手机
上的
WAP
浏览器浏览
WAP
服务器网站的多人手机游戏。比如我们公司之前
推出的
WAP
网游《幻姬》。(这种方式渐渐不被使用)
2
、
CS
架构即(客户端
-
服务器)架构,
CS
架构的手机网游即通过在用手机户
终端安装游戏客户端软件来实现与手机网游服务器端交互。目前游戏客户端
主要针对
Android
、
Iphone
、
Symbian
、
Palm
、
Windows mobile
操作系统
及
Java
、
Brew
、
MTK
等平台开发。支持
PULL
和
PUSH
,信息更加的主动和
及时。(这种方式成为开发的主流)
网络协议
一、
TCP
协议
n
TCP
是面向连接的通信协议
,通过
三次握手
建立连接,通讯时完成时要拆除连接,由于
TCP
是面向连接的所以只能用于点对点的通讯。
n
TCP
提供的是一种
可靠的数据流服务
,采用
“
带重传的肯定确认
”
技术来实现传输的可靠
性。
TCP
还采用一种称为
“
滑动窗口
”
的方式进行流量控制,所谓窗口实际表示接收能力,用以
限制发送方的发送速度。
n
如果
IP
数据包中有已经封好的
TCP
数据包,那么
IP
将把它们向
‘
上
’
传送到
TCP
层。
TCP
将包
排序并进行错误检查,同时实现虚电路间的连接。
TCP
数据包中包括序号和确认,所以未按照
顺序收到的包可以被排序,而损坏的包可以被重传。
n
TCP
将它的信息送到更高层的应用程序,例如
Telnet
的服务程序和客户程序。应用程序轮
流将信息送回
TCP
层,
TCP
层便将它们向下传送到
IP
层,设备驱动程序和物理介质,最后到接
收方。
二、
UDP
协议
n
UDP
是面向无连接的通讯协议
,
UDP
数据包括目的端口号和源端口号信息,由于通讯不需
要连接,所以可以实现广播发送。
n
UDP
通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求
在程序员编程验证。
TCP
连接的建立
三次握手
(three-way handshake)
1
、第一次握手:客户端发送
syn
包
(syn=j)
到服务器,并进入
SYN_SEND
状态,等待服务器确认;
2
、第二次握手:服务器收到
syn
包,必须确认客户的
SYN
(
ack=j+1
),同时自己也发送一个
SYN
包(
syn=k
),即
SYN+ACK
包,此时服务器进入
SYN_RECV
状态;
3
、第三次握手:客户端收到服务器的
SYN
+
ACK
包,向服务器发
送确认包
ACK(ack=k+1)
,此包发送完毕,客户端和服务器进入
ESTABLISHED
状态,完成三次握手。
TCP
所提供服务的主要特点
n
面向连接的传输
n
端到端的通信
n
高可靠性,确保传输数据的正确性,不出现丢失或乱
序
n
全双工方式传输
n
采用字节流方式,即以字节为单位传输字节序列
n
紧急数据传送功能
TCP
协议和
UDP
协议的区别
n
TCP
协议面向连接,
UDP
协议面向非连接
n
TCP
协议传输速度慢,
UDP
协议传输速度快
n
TCP
协议保证数据顺序,
UDP
协议不保证
n
TCP
协议保证数据正确性,
UDP
协议可能丢包
n
TCP
协议对系统资源要求多,
UDP
协议要求少
Socket
通信与
Http
通信的区别
HTTP
是轿车,提供了封装或者显示数据的具体形式;
Socket
是发动机,提供了网络通
信的能力。
n
“
我们在传输数据时,可以只使用(传输层)
TCP/IP
协议,但是那样的话,如果没有
应用层,便无法识别
数据内容,如果想要使传输的数据有意义,则必须使用到应用
层协议,
应用层协议
有很多,比如
HTTP
、
FTP
、
TELNET
等,也可以自己定义应用
层协议。
WEB
使用
HTTP
协议作应用层协议,以封装
HTTP
文本信息,然后使用
TCP/IP
做传输层协议将它发到网络上。
”
n
Socket
是对
TCP/IP
协议的封装,
Socket
本身并不是协议,而是一个
调用接口
(
API
),通过
Socket
,我们才能使用
TCP/IP
协议。实际上,
Socket
跟
TCP/IP
协议
没有必然的联系。
Socket
编程接口在设计的时候,就希望也能适
应其他的网络协
议。所以说,
Socket
的出现只是使得程序员更方便地使用
TCP/IP
协议栈而已,是对
TCP/IP
协议的抽象,从而形成了我们知道的一些最基本的函数接口。
如何建立
socket
连接
n
建立
Socket
连接至少需要一对套接字,其中一个运行于客户端,称为
ClientSocket
,另一个运行于服务器端,称为
ServerSocket
。套接字之间的连接过
程分为三个步骤:服务器监听,客户端请求,连接确认。
n
服务器监听
:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的
状态,实时监控网络状态,等待客户端的连接请求。
n
客户端请求
:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接
字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器
端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
n
连接确认
:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就
响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户
端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于
监听状态,继续接收其他客户端套接字的连接请求。
n
这样就实现了服务器和客户端的通信,既可以客户端随时向服务器发送消息,也可
以服务器随时向客户端发送消息。