您的位置:首页 > 编程语言

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

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次断开握手
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: