1.概述:
Socket,又称为套接字,用于描述IP地址和端口。应用程序通常通过socket向网络发出请求或者应答网络请求。Socket就是网络编程提供的一种机制:
通信两端都有socket;
网络通信其实就是socket之间的通信;
数据在两个socket之间通过io传输。
网络编程也称作为socket编程,套接字编程。
Socket通信是Client/Server模型。
2.基于udp协议的Socket通信
核心类:DatagramSocket
发送端:
//创建发送端Socket服务对象
DatagramSocket dSocket = new DatagramSocket();
//创建数据,打包数据 String message = "hello,are u udp?"; byte[] bys = message.getBytes(); int length = bys.length; InetAddress address = InetAddress.getByName("localhost"); //InetAddress address = InetAddress.getLocalHost(); int port = 12621; DatagramPacket dPacket =new DatagramPacket(bys,length,address,localhost); //发送数据包 dSocket.send(dPacket); //资源释放 dSocket.close(); 接收端: //创建接收端Socket服务对象 DatagramSocket server = new DatagramSocket(12621); //接收数据 //创建接收数据的数据包(数据接收的容器) byte[] bys = new byte[1024]; DatagramPacket packet = new DatagramPacket(bys,bys.length); //接收数据 server.receive(packet); //针对数据包进行解析 String host = packet.getAddress().getHostAddress(); byte[] data = packet.getData(); System.out.Println("接收到了来自"+host+"信息"+new String(data)) //释放资源 server.close;
3.基于TCP协议的socket通信
服务端: 核心API ServerSoket 流程: 创建ServerSocket服务,然后绑定在服务器的IP地址和端口 监听连接请求 接受请求,建立TCP连接 获取输入流读取数据,并显示 释放资源 //建立服务端socket服务,并且监听一个端口 ServerSocket ss = new ServerSocket(13131); //监听连接,是一个阻塞方法,有请求过来,建立连接,返回与之对应的socket来通信 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连接中获取输出流,写数据 释放资源 //创建客户端的socket服务,指定目的主机和端口 Socket s = new Socket("127.0.0.1",13131); //通过socket获取输出流,写数据 OutputStream outputStream = s.getOutputStream(); outputStream.write("hello,this is Tcp?".getBytes()); //释放资源 s.close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)