
两者最常见的方式是通过Socket方式进行通信。
Socket可以理解成一个电线插座的工作过程:
服务器是电源插件, 客户端是电器
C和S通过电线和指定的插孔进行连接,连上后,S将电力源源不断发送到C, C就可以工作了。 当然C也可以反向发送信息到S。 两者可以相互通信。
在建立的过程中代码有一些不同。
在服务端采用API类是ServerSocket
在客户端采用的API是Socket类
连接建立后,双方都通过连接获取输入和输出流从而实现通信。即: InputStream is=socketgetInputStream();
isread();
连接代码:
S端:
ServerSocket server=null;
try {
server=new ServerSocket(指定的端口);
}catch(Exception e){
Systemoutprintln("不能监听:"+etoString());
}
Socket socket=null;
try {
socket=serveraccept();
InputStream is=socketgetInputStream();
//己通过建立起流,可以读取客户端发来的请求了
//同样也可以发送能过 sokcetgetOutputStream()
}
catch(IOException e){
Systemoutprintln("出错:"+etoString());
}finally{
try {
if(socket!=null){
socketclose();
serverclose();
}
}
catch(IOException e){
eprintStackTrace();
}
}
客户端:
Socket socket=null;
try {
socket=new Socket(url,端口);
//获取输出流,从而向服务端发数据
socketgetOutputStream();
//获取输入流,从而可以读服务端的数据
socketgetInputStream();
}catch(Exception e){
eprintStackTrace();
}
finally{
try {
socketclose();
}
catch(IOException e){
eprintStackTrace();
}
}1客户端是你在游戏里能看到的一切东西,其实就是UI
2如果是单机游戏,可以只有客户端,但是网络游戏需要客户端和服务器才能构成一个整体
3和4网游一般就是服务器做功能,客户端做显示,客户端需要发指令来通知服务器我要做什么事情,比如说加点吧,我要把点数加在什么属性上,加几点等等这些需要通过加点指令告诉服务器,然后服务器接收到指令后先要对相关的参数进行校验,这个主要是为防止被破解的客户端,只有合法的情况下,才会去调用服务器相关功能的接口,经过一系列的逻辑与数据的计算,最后通知客户端它想要知道的东西。当然有的东西不止要反馈自己的客户端,还需要通知其他玩家的客户端,比如聊天等等
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)