本帖最后由 小石姐姐 于 2018-4-26 14:17 编辑
JavaEE网络编程笔记
Day_12网络编程与协议
创建发送端Socket对象
创建数据并打包
发送数据
释放资源网络编程
Socket: 中文名译为套接字
不是协议,而是对协议的封装,提供了编程规范接口,让程序员可以通过它来实现相关网络协议 用于描述IP地址和端口,是一种网络编程机制,通信的两端,不管是发送方还是接收方都需要有Socket 计算机上一般会有多个服务程序,每个服务程序会使用多个Socke进行网络通信,每个Socket会绑定到一个端口上,网络通信就是Socket之间的通信,数据在两个Socket之间通过IO流进行传输
网络编程中分为两种协议 UDP协议和TCP协议 UPDP协议发送接收数据
发送数据
/*
* // 1. 为发送端创建Socket对象(DatagramSocket)
DatagramSocket datagramSocket = new DatagramSocket();
// 2. 创建数据并打包
DatagramPacket datagramPacket = new DatagramPacket(byte数组, 数组长度, InetAddress对象, 端口号);
// 3. 发送数据
datagramSocket.send(datagramPacket);
// 4. 释放资源
datagramSocket.close();
*/
public class SendDemo {
public static void main(String[] args) throws IOException {
// 先创建 DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
// 创建一个空包来存放数据 ,并且要给包指定地址,要发送的东西和发多少,端口号
String s = "这是UDP";
// 将字符串转换成字节数组
byte[] by = s.getBytes();
DatagramPacket dp = new DatagramPacket(by, by.length, InetAddress.getByName("192.168.1.116"), 8870);
ds.send(dp);
// 关闭资源
ds.close();
}
}//接收数据
* 接收 本地主机 发送过来
”Hello,I am comming”
利用DatagramSocket和DatagramPacket完成
接收端,并打印发送过来的数据
*/
public class ReceiveDemo {
// public static void main(String[] args) throws IOException {
// // 创建接收端接收端口号
// DatagramSocket ds = new DatagramSocket(8870);
// // 创建空包接收
// byte[] by = new byte[1024];
// DatagramPacket packet = new DatagramPacket(by, by.length);
// // 接收数据
// ds.receive(packet);
//
// // 解析数据
// // 获取了Ip地址
// InetAddress address = packet.getAddress();
// // 将获取到的字符数组解析
// byte[] data = packet.getData();
// // 接收多少,我们就输出多少
// String msg = new String(data, 0, packet.getLength());
//
// System.out.println("[" + address + "]发来消息:" + msg);
//
// // 关闭数据
// ds.close();
//
// }
public static void main(String[] args) throws IOException {
// 创建协议对象接收定义的端口号
DatagramSocket dp = new DatagramSocket(8870);
// 创建一个空包来接收
byte[] by = new byte[1024];
DatagramPacket dg = new DatagramPacket(by, by.length);
// 接收数据
dp.receive(dg);
//解析数据
//第一步先获取到数据
byte[] data=dg.getData();
String str=new String(data,0,dg.getLength());
System.out.println("我收到你发送的数据了:"+str+"\t原来你是"+dg.getAddress().getHostName());
}
}
TCP协议发送数据
// 1. 创建客户端Socket对象(建立连接)
Socket socket = new Socket(InetAddress地址, 端口号);
// 2. 获取输出流对象
OutputStream outputStream = socket.getOutputStream();
// 3. 发送数据
outputStream.write(byte数组);
// 4. 释放资源
socket.close();TCP协议接收数据
|
|