JavaSE-21.3.1【TCP发送数据、接收数据】
1 package day12.lesson3; 2 3 import java.io.IOException; 4 import java.io.OutputStream; 5 import java.net.InetAddress; 6 import java.net.Socket; 7 8 /* 9 3 TCP通信程序 10 11 3.1 TCP发送数据 12 13 Java中的TCP通信 14 Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。 15 Java为客户端提供了Socket类,为服务器端提供了ServerSocket类 16 17 构造方法 18 Socket(InetAddress address,int port) 创建流套接字并将其连接到指定IP指定端口号 19 Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号 20 21 相关方法 22 InputStream getInputStream() 返回此套接字的输入流 23 OutputStream getOutputStream() 返回此套接字的输出流 24 */ 25 public class ClientDemo { 26 public static void main(String[] args) throws IOException { 27 //创建客户端的Socket对象(Socket) 28 // Socket s = new Socket(InetAddress.getByName("MSI-YUBABY"), 10000); 29 Socket s = new Socket("MSI-YUBABY", 10000); 30 31 //获取输出流,写数据 32 OutputStream os = s.getOutputStream(); 33 os.write("hello, tcp".getBytes()); 34 35 //释放资源 36 s.close(); 37 38 //直接运行客户端ClientDemo-main 39 //Exception in thread "main" java.net.ConnectException: Connection refused: connect 40 //因为TCP需要三次握手,必须有与之匹配的服务端 41 } 42 }
1 package day12.lesson3; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 8 /* 9 3.2 TCP接收数据 10 构造方法 11 ServletSocket(int port) 创建绑定到指定端口的服务器套接字 12 相关方法 13 Socket accept() 监听要连接到此的套接字并接受它 14 */ 15 public class ServerDemo { 16 public static void main(String[] args) throws IOException { 17 //创建服务器端的Socket对象(ServerSocket) 18 ServerSocket ss = new ServerSocket(10000); 19 20 //Socket accept() 侦听要连接到此套接字并接受它 21 Socket s = ss.accept(); 22 23 //获取输入流,读数据,并把数据显示在控制台 24 InputStream is = s.getInputStream(); 25 byte[] bytes = new byte[1024]; 26 int len = is.read(bytes); 27 String data = new String(bytes, 0, len); 28 System.out.println("接收到的数据:" + data); 29 30 //释放资源 31 s.close(); 32 ss.close(); 33 34 //先执行ServerDemo-main,再执行ClientDemo-main 35 } 36 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!