android Socket使用笔记
来源:互联网 发布:淘宝dsr评分计算器 编辑:程序博客网 时间:2024/06/05 20:10
由于在项目中使用了Socket进行了与底层库的通信,故将此简单整理如下。
在最近的app项目中,因为要不停的给底层库发送指令使其工作,并监听来自底层库的反馈。所以采取了Socket通信的模式,让上层app作为服务端,底层库作为客户端,利用Socket进行通信。完成功能需求。
涉及的类:ServerSocket,Socket;
1.使用SevcerSocket建立服务器端
a.创建ServerSocket实例
以下是ServerSocket的构造方法说明:
ServerSocket(int port)方法:用指定端口port来创建一个ServerSocket,该端口应该是一个有效的端口数值:0~65535(绑定默认的IP,通常绑定1024以上的端口,为了避免和其它程序的冲突);
ServerSocket(int port,int backlog)方法:增加了一个用来改变队列长度的参数backlog;
SetverSocket(int port,int backlog,InetAddress localAddr):在机器存在多个IP的情况下,允许通过localAddr这个参数来指定将ServerSocket绑定到指定的Ip地址。
b.监听客户端请求
ServerSocket的accept()方法:监听客户端的连接请求,如果接收到返回一个Socket对象与连接客户端Socket对应的Socket(通常通过不断的循环调用ServerSocket的accept()方法)。
c.关闭ServerSocket
当ServerSocket使用完毕后,应使用ServerSocket的close()方法关闭该ServerSocket。
2.使用Socket与服务端进行通信
1)连接指定服务器
客户端通常使用Socket类构建通信,连接指定的服务器。Socket有如下几个构造方法:
a.Socket(inetAddress/String remoteAddress,int port):创建到指定远程主机,远程端口的Socket(默认使用本地默认IP);
b.Socket(intAddress/String remoteAddress,int port,InetAddress localAddr,int localPort):创建连接到指定远程主机、远程端口的Socket,并指定本地的IP地址和本地的端口(适用于本地多个IP地址的情形);
当构造Socket对象后,就会连接指定服务器,让服务器端的ServerSocket的accept()方法执行,产生一对相互连接的Socket
2)互相通信
注意:
1.在实际应用中,程序可能不像让执行网络连接、读取服务器数据一直阻塞,而是希望网络连接、读取操作超过合理事件后,系统自定认为操作失败,即超时时长,提供了一个setToTimeout(int timeout)来设置超时时长
2.加入多线程
在服务端,为accept()方法产生的每个Socket创建一个单独的线程处理与客户端的通信;
在客户端,为通信的Socket单独建立一个线程,通过连个Handler分别将接受服务器的消息发送给主线程,将主页面输入的信息发送到单独线程中;
- android Socket使用笔记
- Android socket TCP使用笔记。
- socket KeepAlive 使用笔记
- Android学习笔记(十三)——socket的使用
- android 使用socket 出错
- Android Socket 的使用
- Android中Socket使用
- Android中使用Socket
- Android/Socket使用
- Android:Socket使用攻略
- android学习笔记之Socket
- Android Socket编程学习笔记
- Android Socket编程学习笔记
- Android Socket通信 错误笔记
- Android NDK中使用socket
- Android NDK中使用socket
- android socket的使用范例
- 在Android上使用Socket
- VC++ CopyFile函数用法
- 玩转Web之JavaScript(二)-----javaScript语法总结(二) 涉及Date与数组的语法
- 黑马程序员----IO流
- 利用npoi导出excel
- Android 4.0 截屏(Screenshot)代码流程小结
- android Socket使用笔记
- Coding4Fun的4个 ValueConverter 示例
- 设计模式(13) 对象行为型模式和职责链模式
- android背景选择器selector使用方法
- 12:00 a.m.究竟是中午12点还是午夜12点?
- cocos2d-x3.0+VS2013环境配置
- VC++字符串截取总结
- 使用 Eclipse 远程调试 Java 应用程序
- java和C#中静态字段和静态方法的使用异同