本帖最后由 我是楠楠 于 2018-9-26 16:17 编辑
【郑州校区】大数据基础加强阶段2之Socket 机制 4.1 . Socket概述 Socket,又称为套接字,用于描述 IP 地址和端口。应用程序通常通过 socket 向网络发出请求或者应答网络请求。Socket 就是为网络编程提供的一种机制: 通信两端都有 socket; 网络通信其实就是 socket 之间的通信; 数据在两个 socket 之间通过 IO 传输。 网络编程也称作为 Socket 编程,套接字编程。 Socket 通信是 Client/Server 模型。 4.2 . 基于 UDP协议的 Socket通信 核心类:DatagramSocket 发送端: [AppleScript] 纯文本查看 复制代码 // 创建发送端 Socket 服务对象
DatagramSocket dSocket = new DatagramSocket();
// 创建数据,打包数据
String message = "hello ,are u UDP ?"; byte[] bys = message.getBytes();
int length = bys.length;
InetAddress address = InetAddress.getByName("localhost"); int port = 12621;
DatagramPacket dPacket = new DatagramPacket(bys, length, address, port);
// 发送数据dSocket.send(dPacket);
// 资源释放dSocket.close(); 接收端: [AppleScript] 纯文本查看 复制代码 //创建接收端 Socket 服务对象
DatagramSocket dSocket = new DatagramSocket(12621);
//创建数据包(接收容器)
byte[] bys = new byte[1024];
DatagramPacket dPacket = new DatagramPacket(bys, bys.length);
//调用接收方法
dSocket.receive(dPacket);
//数据包解析
InetAddress address = dPacket.getAddress();
String hostAddress = address.getHostAddress();
byte[] data = dPacket.getData();
String message = new String(data);
System.out.println(hostAddress+"*********:"+message);
//资源释放
dSocket.close();
4.3 . 基于 TCP协议的 Socket通信 服务端 核心 API:ServerSocket 流程: 创建 ServerSocket 服务,然后绑定在服务器的 IP 地址和端口监听连接请求 接受请求,建立了 TCP 连接获取输入流读取数据,并显示释放资源 [AppleScript] 纯文本查看 复制代码 //建立服务端 socket 服务,并且监听一个端口ServerSocket ss = new ServerSocket(13131);
//监听连接
Socket s = ss.accept();
//获取输入流,读取数据
InputStream inputStream = s.getInputStream(); byte[] bys = new byte[1024];
int len = inputStream.read(bys);
System.out.println(new String(bys, 0, len));
//关闭客户端s.close();
//关闭服务端,一般服务端不关闭ss.close();
客户端 核心 API:Socket 流程: 创建客户端 socket 对象 向服务端请求建立 tcp 连接 从 tcp 连接中获取输出流,写数据 释放资源 [AppleScript] 纯文本查看 复制代码 //创建客户端的 socket 服务,指定目的主机和端口Socket s = new Socket("127.0.0.1", 13131);
//通过 socket 获取输出流,写数据
OutputStream outputStream = s.getOutputStream(); outputStream.write("hello ,this is tcp?".getBytes());
//释放资源s.close(); 传智播客·黑马程序员郑州校区地址 河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层 |