一、TCP通信原理
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,
一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信
Java对于基于TCP协议的网络提供了良好的封装,使用Socket对象代表两端的通信端口,并通过Socket产生IO流进行网络通信
Java为客户端提供了Socket类,为服务端提供了ServerSocket类
二、TCP发送数据
发送数据的步骤:
1.创建客户端的Socket对象
Socket(String host, int port): 创建流套接字并将其连接到指定主机上的指定端口号,IP地址可以是字符串类型的。
2.获取输出流、写数据outputstream
getOutputStream():返回此套接字的输出流。
3.释放资源
package Demo042002;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*TCP发送端
1.创建客户端的Socket对象
Socket(String host, int port): 创建流套接字并将其连接到指定主机上的指定端口号,IP地址可以是字符串类型的。
2.获取输出流、写数据outputstream
getOutputStream():返回此套接字的输出流。
* */
public class TcpSend {
public static void main(String[] args) throws IOException {
//创建客户端的Socket对象
//Socket(String host, int port): 创建流套接字并将其连接到指定主机上的指定端口号,IP地址可以是字符串类型的。
Socket s=new Socket("cy",12345);
//获取输出流、写数据outputstream
OutputStream ops = s.getOutputStream();
ops.write("最美不过姑娘你".getBytes());
//释放资源
ops.close();
s.close();
}
}
这仅仅是发送数据的步骤,我们知道TCP通信需要经过“三次握手”,所以如果直接运行会报错
三、TCP接收数据
步骤:
1.创建服务器端的Sockt对象(ServerSocket)
2.监听客户端连接,返回一个Soket对象
3.获取输入流,读数据;
getInputstream()
4.释放资源
package Demo042002;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*服务端
1.创建服务器端的Sockt对象(ServerSocket)
2.获取输入流,读数据;
getInputStream():返回此套接字的输入流。
3.释放资源
* */
public class TcpRecive {
public static void main(String[] args) throws IOException {
//创建服务器端的Sockt对象(ServerSocket)
ServerSocket ss=new ServerSocket(12345);
//accept() 侦听要连接到此套接字并接受它返回一个Soket对象
Socket s = ss.accept();
//获取输入流,读数据;
InputStream ips = s.getInputStream();
byte[] bytes=new byte[1024];
int len;
while ((len=ips.read(bytes))!=-1){
System.out.println("数据是"+new String(bytes,0,len));
}
//释放资源
ips.close();
ss.close();
}
}
在建立服务端并启动后,客户端就可以通过三次握手进行与服务端的通信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY