2022-08-11 田龙跃 学习笔记
Socket通信
1.DatagramSocket-UDP类 .send(DatagramPacket类的报文包)
UDP只是收发报文包进行通信
点击查看发包和收包
public class DatagramSocketTest {
@Test
public void client() throws Exception {
// 构建UDP对象
DatagramSocket datagramSocket=new DatagramSocket();
// 构建数据包
String str="哈哈哈哈哈哈哈哈哈";
DatagramPacket datagramPacket=new DatagramPacket(str.getBytes(),0,str.getBytes().length);
// 获取链接
datagramSocket.connect(InetAddress.getLocalHost(),8888);
// 发送数据包
datagramSocket.send(datagramPacket);
// 关闭资源
datagramSocket.close();
}
@Test
public void server() throws Exception {
// 构建UDP对象
DatagramSocket datagramSocket = new DatagramSocket(8888);
// 构建数据包
byte [] bytes=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(bytes,0,1024);
// 收包
datagramSocket.receive(datagramPacket);
byte[] data = datagramPacket.getData();
System.out.println(new String(bytes,0,bytes.length));
// 关闭资源
datagramSocket.close();
}
}
ServletSocket套接字简单实用
@Test
public void server() throws IOException {
// 服务器对象——端口
ServerSocket serverSocket=new ServerSocket(8889);
System.out.println("服务器运行");
// 开启服务器——接受访问
Socket accept = serverSocket.accept();
// 获取输出流用来读取客户端传来的消息
InputStream inputStream = accept.getInputStream();
// 输出流读
int len;
byte [] bytes=new byte[1024];
while ((len=inputStream.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
// 关闭资源
inputStream.close();
accept.close();
}
3.Socket-TCP客户端 .connect链接服务器 socket.获取流
Socket套接字简单实用
@Test
public void client() throws IOException {
// 创建Socket对象
Socket socket=new Socket();
System.out.println("客户端运行");
// 获取链接 ip地址+端口号
socket.connect(new InetSocketAddress(InetAddress.getLocalHost(),8889));
// 获取输出流
OutputStream outputStream = socket.getOutputStream();
String string="Hello Service";
outputStream.write(string.getBytes());
// 关闭资源
outputStream.close();
socket.close();
}
** 客户端每次传输结束都要与客户端进行一次沟通告诉他我这次传输完了**??通信0811
4.URL工具类
5.InetAddress工具类
浏览器访问socket
就是tomcat原理:输出流直接写html相应响应头和Html页面等,我们可以截取出来,然后利用服务器的输出流.write出对应的响应(Tomcat原理)
(请求重定向会返回一个Location头:他的value值是重定向的网络地址)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?