Socket通信 客户端编程

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 客户端通信代码:

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次断开握手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值