Socket通信 客户端编程
2016-02-25 17:52
218 查看
Socket适用场景:
网络游戏,银行交互,支付。
优点:
传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低;
传输数据时间短,性能高;
适合C/S之间信息实时交互;
可以加密,数据安全性高
缺点:
需要对传输的数据进行解析,转化为应用级的数据;
对开发人员的开发水平要求高;
相对于Http协议传输,增加了开发量
Socket 的基本操作:
连接远程机器;
发送数据;
接收数据;‰
关闭连接;
绑定端口;
监听到达数据 ;
在绑定的端口上接受来自远程机器的连接。
常用的构造客户端 Socket 的方法有以下几种:
Socket():创建一个新的未连接的 Socket;
Socket(Proxy proxy):使用指定的代理类型创建一个新的未连接的 Socket;
Socket(String dstName,int dstPort) :使用指定的目标服务器的 IP 地址和目标服务器 的端口号,创建一个新的 Socket;
Socket(String dstName,int dstPort,InetAddress localAddress,int localPort) :使用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的 Socket;
Socket(InetAddress dstAddress,int dstPort) :使用指定的本地地址和本地端口,创建 一个新的 Socket;
Socket(InetAddress dstAddress,int dstPort,InetAddress localAddress,int localPort) :使 用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的 Socket。
其中,proxy 为代理服务器地址,dstAddress 为目标服务器 IP 地址,dstPort 为目标服 务器的端口号(因为服务器的每种服务都会绑定在一个端口上面),dstName 为目标服务器 的主机名。
Socket 类重要方法:
Public InputStream getInputStream() 读出该 Socket 中的数据 ;
public OutputStream getOutputStream() 向该 Socket 中写入数据;
public synchronized void close() 关闭该 Socket。
TCP 客户端工作的主要步骤如下:
步骤 1 调用 Socket() 创建一个流套接字,并连接到服务器端。
步骤 2 调用 Socket 类的getOutputStream() 和 getInputStream() 方法获取输出和输入 流,开始网络数据的发送和接收。
步骤 3 关闭通信套接字。
一个简单的socket 客户端通信代码:
在 Android 配置文件中需要添加下面的权限:
android.permission.INTERNET。
socket 最核心的部分是 通信协议的设计 基于socket简单通信协议实现。
杂言:
两个开源的框架不错,一个是apache mina 还有个是netty。
Socket的3次握手链接与4次断开握手
网络游戏,银行交互,支付。
优点:
传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低;
传输数据时间短,性能高;
适合C/S之间信息实时交互;
可以加密,数据安全性高
缺点:
需要对传输的数据进行解析,转化为应用级的数据;
对开发人员的开发水平要求高;
相对于Http协议传输,增加了开发量
Socket 的基本操作:
连接远程机器;
发送数据;
接收数据;‰
关闭连接;
绑定端口;
监听到达数据 ;
在绑定的端口上接受来自远程机器的连接。
常用的构造客户端 Socket 的方法有以下几种:
Socket():创建一个新的未连接的 Socket;
Socket(Proxy proxy):使用指定的代理类型创建一个新的未连接的 Socket;
Socket(String dstName,int dstPort) :使用指定的目标服务器的 IP 地址和目标服务器 的端口号,创建一个新的 Socket;
Socket(String dstName,int dstPort,InetAddress localAddress,int localPort) :使用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的 Socket;
Socket(InetAddress dstAddress,int dstPort) :使用指定的本地地址和本地端口,创建 一个新的 Socket;
Socket(InetAddress dstAddress,int dstPort,InetAddress localAddress,int localPort) :使 用指定的目标主机、目标端口、本地地址和本地端口,创建一个新的 Socket。
其中,proxy 为代理服务器地址,dstAddress 为目标服务器 IP 地址,dstPort 为目标服 务器的端口号(因为服务器的每种服务都会绑定在一个端口上面),dstName 为目标服务器 的主机名。
Socket 类重要方法:
Public InputStream getInputStream() 读出该 Socket 中的数据 ;
public OutputStream getOutputStream() 向该 Socket 中写入数据;
public synchronized void close() 关闭该 Socket。
TCP 客户端工作的主要步骤如下:
步骤 1 调用 Socket() 创建一个流套接字,并连接到服务器端。
步骤 2 调用 Socket 类的getOutputStream() 和 getInputStream() 方法获取输出和输入 流,开始网络数据的发送和接收。
步骤 3 关闭通信套接字。
一个简单的socket 客户端通信代码:
try { // 初始化 Socket,TCP_SERVER_PORT 为指定的端口,int 类型 Socket socket = new Socket("localhost", 80); // 获取输入流 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 生成输出流 BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 生成输出内容 String outMsg = "TCP connecting to " + 80 + System.getProperty("line.separator"); // 写入 out.write(outMsg); // 刷新,发送 out.flush(); // 获取输入流 String inMsg = in.readLine() + System.getProperty("line.separator"); Log.i("TcpClient", "received: " + inMsg); // 关闭连接 socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
在 Android 配置文件中需要添加下面的权限:
android.permission.INTERNET。
小结
以上就是简单的Sockey通信客户端编程。且只是入门。。。socket 最核心的部分是 通信协议的设计 基于socket简单通信协议实现。
杂言:
两个开源的框架不错,一个是apache mina 还有个是netty。
Socket的3次握手链接与4次断开握手
相关文章推荐
- python开发学习-day06(模块拾忆、面向对象)
- 关于ctags跟踪代码的总结
- 高效Java编程工具集锦(转自极客头条)
- eclipse 和 android studio 快捷键对比
- spring的线程流程
- win7下面安装python3.4+django1.7遇到的问题及解决
- java中把List转成json数组格式的字符串
- python教程集合
- 自动安装与配置gitlab
- Java五种单例模式与线程安全
- java设计模式:状态模式 State
- Struts2学习笔记(三):result配置的各项视图转发类型
- 【转自戴Sir】七牛关于Python SDK的各种Demo
- spring+mybaties 配置多数据源
- 【Stackoverflow好问题】Java += 操作符实质
- 设计模式:装饰器模式(为对象动态的添加功能)
- java 实体类转成json字符串
- Java垃圾回收工作原理
- asp.net时间 日期(DateTime) 的格式处理
- 【JavaWeb Structs2学习】OGNL表达式