第3讲 Android游戏开发中的网络编程

  • 格式:ppt
  • 大小:1.25 MB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13
7
标准Java接口:java.net Apache接口:org.apache.http
Android网络接口:android.net.http
volley框架
允许应用程序访问网络:在AndroidManifest.xml添加访问权限, <uses-permission android:name="android.permission.INTERNET"/>
1
基于Socket套接字的网络编程 基于HTTP的网络编程 蓝牙通信
2
Socket
通过一个双向的通信连接实现数据的交互。
3
创建socket后,代码运 行会阻塞,等待别人的 Socket 连接。 1.创建socket,绑定ip地址和端口号
ServerSocket(int port);指定端口port要创建一 个ServerSocket,端口有效值:0~65535。 ServerSocket(int port,int backlog);增加一个 用来改变连接队列长度的参数backlog。 ServerSocket(int port,int backlog,InetAddress localAddr);在机器存在 多个ip地址时,允许通过localAddr参数指定绑 定的ip地址。
(2)写入 “\n”:回车 获取输出流 “\t”:换行 OutputStream os=socket.getOutputStream(); 写入内容 os.write((“要写入的内容”+”\n”).getBytes(“utf-8”));
5
Socket
1.创建socket,绑定ip地址和端口号
8
标准Java接口:java.net
1)URL url=new URL(“”);//创建客户端对象 2)URLConnection conn=url.openConnection();//发送请 求 3)conn.getInputStream(); //获取响应数据
9
Apache接口:org.apache.http
Get请求
联网耗时需入 到线程中执行
1)HttpGet httpget=new HttpGet(“Url地址”);//通过url创建httpget对象 2)HttpClient httpclient=new DefaultHttpClient();//获取一个Http客户端对象 3)HttpResponse response=httpclient.execute(httpget);//使用http客户端对象发送 请求 4)HttpEntiy httpentiy=response.getEntity();//获取响应数据
2.接收客户端的请求
Socket accept();如果收到一个客户端的 Socket的连接请求,该方法返回一个与连接客 户端Socket对应的Socket 。
4
Socket
3.读取/写入字符
(1)读取 获取输入流,并包装成BufferedReader BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); 进行普通的I/O的读操作 String content=br.readLine();
12
volley框架
(1)下载volley框架,导入到自己的项目中:sdk版本至少要在8以上 (2)在项目中使用volley 1.创建
RequestQueue RequestQueue mQueue = Volley.newRequestQueue(context); 2.Url组建 这个是根据自己的需求组建url 3.创建StringRequest 参数:method请求方法 Url地址 lietener监听器
6
Socket
2.读取/写入字符
(1)读取 获取输入流,并包装成BufferedReader BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); 进行普通的I/O的读操作 String content=br.readLine(); (2)写入 获取输出流 OutputStream os=socket.getOutputStream(); 写入内容 os.write((“要写入的内容”+”\n”).getBytes(“utf-8”));
Socket(inetAddress/String remoteAddress,int port);创建连接到指定 的远程主机中,如果没有指定远程主机的ip 地址就使用本机的默认ip地址。 Socket(inetAddress/String remoteAddress,int port,inetAddress localAddr,int localPort);适用于本地主机 有多个ip地址。
11
Android网络接口:android.net.http
1)Andwenku.baidu.comiodHttpClient client=AndroidHttpClient.newInstance(“”);//设置代理 2)HttpGet httpGet=new HttpGet(“URL地址”);//获取对象 3)HttpResponse response=client.execute(httpGet)//发 送请求 4)response.getStatusLine();//获取响应数据
10
3.1
HTTP通信
Apache接口:org.apache.http
Post请求 1)HttpPost httppost=new HttpPost(“Url地址”);//通过url创建httpget对象 List<NameValuePair> params=new ArrayList<NameValuePair>(); Params.add(new BasicNameValuePair(“str”,”I am Post String”)); 设置要传 Httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); 送的参数 2)HttpClient httpclient=new DefaultHttpClient();//获取一个Http客户端对象 3)HttpResponse response=httpclient.execute(httpget);//使用http客户端对象发送 请求 4)HttpEntiy httpentiy=response.getEntity();//获取响应数据
StringRequest request = new StringRequest(Method.POST, urls, new Listener<String>() { public void onResponse(String response) { result = SecuritUtil.aesBase64Decode(response); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }) { @Override public byte[] getBody() throws AuthFailureError { } };