socet网络编程
一、 网络模型
应用层 ----- HTTP协议
传输层 ----- TCP协议
网络层 ----- IP协议
链路层 ----- 以太网协议
二、什么是socket
socket是一种
三、Upd协议与Tcp协议的区别
四、Upd协议下的服务端与客户端的demo
1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 import java.net.InetAddress; 5 //Upd服务端 6 class UpdService{ 7 8 public static void main(String[] args) throws IOException { 9 System.out.println("upd协议服务端已启动..."); 10 //创建端口号 默认ip地址是本机 11 DatagramSocket ds = new DatagramSocket(8080); 12 byte[] buf = new byte[1024]; 13 //数据包 14 DatagramPacket dp = new DatagramPacket(buf, 0, buf.length); 15 //会发生阻塞 等待客户端发送请求 16 ds.receive(dp); 17 System.out.println("来源:" + dp.getAddress() + " 端口" + dp.getPort()); 18 System.out.println("接受来自客户端的数据:" + new String(dp.getData(), 0, dp.getLength())); 19 ds.close(); 20 } 21 22 } 23 24 //Upd客户端 25 public class UpdClient { 26 public static void main(String[] args) throws IOException { 27 28 System.out.println("upd协议客户端开始请求..."); 29 DatagramSocket ds = new DatagramSocket(); 30 String str = "好好学习, 天天向上" ; 31 byte[] buf = str.getBytes(); 32 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 8080); 33 //发送数据包 34 ds.send(dp); 35 ds.close(); 36 37 } 38 }
五、Tcp协议下的服务端与客户端的demo
1 import java.io.IOException; 2 import java.io.InputStream; 3 import java.io.OutputStream; 4 import java.net.ServerSocket; 5 import java.net.Socket; 6 //tcp协议下的服务端 7 class TcpService{ 8 public static void main(String[] args) throws IOException { 9 InputStream inputStream = null; 10 ServerSocket serverSocket = null; 11 try { 12 System.out.println("tcp协议下的服务器启动....."); 13 serverSocket = new ServerSocket(8080); 14 //接受客户端发送过来的数据 15 Socket accept = serverSocket.accept(); 16 //获取输入流 17 inputStream = accept.getInputStream(); 18 byte[] buf = new byte[1024]; 19 inputStream.read(buf, 0, buf.length); 20 System.out.println("客户端请求数据:" + new String(buf, 0, buf.length)); 21 //返回给客户端的信息 22 OutputStream outputStream = accept.getOutputStream(); 23 outputStream.write("损粗".getBytes()); 24 outputStream.close(); 25 }finally { 26 inputStream.close(); 27 if(!serverSocket.isClosed()) serverSocket.close(); 28 } 29 } 30 } 31 //tcp协议下的客户端 32 public class TcpClient { 33 public static void main(String[] args) throws IOException { 34 Socket socket = null; 35 try { 36 System.out.println("tcp协议客户端启动..."); 37 socket = new Socket("127.0.0.1", 8080); 38 OutputStream outputStream = socket.getOutputStream(); 39 outputStream.write("good good study, day day up!".getBytes()); 40 }finally { 41 socket.close(); 42 } 43 } 44 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)