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 }
复制代码

 

posted @   yub4by  阅读(53)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示