TCP通信中如何实现可靠的数据传输?

2026-06-10 08:289阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1086个文字,预计阅读时间需要5分钟。

TCP通信中如何实现可靠的数据传输?

/+作者:六脉老僧认证讲师:CSDN认证讲师、51CTO高级讲师、腾讯课堂认证讲师、网易云课堂认证讲师、华为开发者学院认证讲师、爱奇艺千人行策划成员在这里,给广大家庭分享技术、知识。


/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。

区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据。

而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。

在JDK中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个是Socket类,用于表示客户端。

通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象向服务器端发出连接请求,服务器端响应请求,两者建立连接开始通信。

package com.wowowo.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient {

/**
* @param
public static void main(String[] args) {
// TODO Auto-generated method stub

//tcp客户端

//1.创建客户端 指定服务器端的ip和端口号
try {
Socket socket=new Socket("192.168.31.111", 8899);

//返回客户端的字节输出流对象
OutputStream os= socket.getOutputStream();

//2.发送数据到服务器端
os.write("呆萌老师你好".getBytes());


//也可以接收服务端的反馈信息
InputStream is= socket.getInputStream();

byte[] data=new byte[1024];

is.read(data);

System.out.println("得到服务器反馈回来的消息:"+new String(data));

//3.关闭客户端
socket.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block

package com.wowowo.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

/**
* @param
public static void main(String[] args) {
// TODO Auto-generated method stub

//服务器端
try {
//1.创建服务器端socket
ServerSocket serverSocket=new ServerSocket(8899);

//2.接收客户端
Socket socket= serverSocket.accept();

//3.拿到客户端的消息
InputStream is= socket.getInputStream();

byte[] data=new byte[1024];

is.read(data);

System.out.println("来自客户端的消息:"+new String(data));

//4.给客户端发送反馈信息
OutputStream os= socket.getOutputStream();
os.write("你好,收到你的消息了".getBytes());

//4.关闭客户端
socket.close();

//5.关闭服务器端
//serverSocket.close();


} catch (IOException e) {
// TODO Auto-generated catch block

架构介绍

软件在开发的时候,需要先设计软件采用的架构模型:

B/S 架构:Browser / Server 浏览器 / 服务器 模型

BS架构:在开发中,仅仅只需要开发服务器端的软件程序,而客户端直接使用浏览器访问。

BS好处:开发成本降低,周期缩短。维护方便。

BS弊端:需要将所有的运算都放在服务器。

C/S 架构:Client / Server 客户端 / 服务器 模型

CS架构的软件,在软件开发中,要求开发人员,开发两套软件,一个是普通的用户使用的客户端软件,一个是企业使用的服务器软件。

TCP通信中如何实现可靠的数据传输?

CS架构弊端:开发周期长, 维护成本高。

CS架构的好处:可以将部分的运行转嫁给客户端电脑。

更多关注

​​edu.51cto.com/course/20124.html​​

本文共计1086个文字,预计阅读时间需要5分钟。

TCP通信中如何实现可靠的数据传输?

/+作者:六脉老僧认证讲师:CSDN认证讲师、51CTO高级讲师、腾讯课堂认证讲师、网易云课堂认证讲师、华为开发者学院认证讲师、爱奇艺千人行策划成员在这里,给广大家庭分享技术、知识。


/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。

区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据。

而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。

在JDK中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个是Socket类,用于表示客户端。

通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象向服务器端发出连接请求,服务器端响应请求,两者建立连接开始通信。

package com.wowowo.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient {

/**
* @param
public static void main(String[] args) {
// TODO Auto-generated method stub

//tcp客户端

//1.创建客户端 指定服务器端的ip和端口号
try {
Socket socket=new Socket("192.168.31.111", 8899);

//返回客户端的字节输出流对象
OutputStream os= socket.getOutputStream();

//2.发送数据到服务器端
os.write("呆萌老师你好".getBytes());


//也可以接收服务端的反馈信息
InputStream is= socket.getInputStream();

byte[] data=new byte[1024];

is.read(data);

System.out.println("得到服务器反馈回来的消息:"+new String(data));

//3.关闭客户端
socket.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block

package com.wowowo.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

/**
* @param
public static void main(String[] args) {
// TODO Auto-generated method stub

//服务器端
try {
//1.创建服务器端socket
ServerSocket serverSocket=new ServerSocket(8899);

//2.接收客户端
Socket socket= serverSocket.accept();

//3.拿到客户端的消息
InputStream is= socket.getInputStream();

byte[] data=new byte[1024];

is.read(data);

System.out.println("来自客户端的消息:"+new String(data));

//4.给客户端发送反馈信息
OutputStream os= socket.getOutputStream();
os.write("你好,收到你的消息了".getBytes());

//4.关闭客户端
socket.close();

//5.关闭服务器端
//serverSocket.close();


} catch (IOException e) {
// TODO Auto-generated catch block

架构介绍

软件在开发的时候,需要先设计软件采用的架构模型:

B/S 架构:Browser / Server 浏览器 / 服务器 模型

BS架构:在开发中,仅仅只需要开发服务器端的软件程序,而客户端直接使用浏览器访问。

BS好处:开发成本降低,周期缩短。维护方便。

BS弊端:需要将所有的运算都放在服务器。

C/S 架构:Client / Server 客户端 / 服务器 模型

CS架构的软件,在软件开发中,要求开发人员,开发两套软件,一个是普通的用户使用的客户端软件,一个是企业使用的服务器软件。

TCP通信中如何实现可靠的数据传输?

CS架构弊端:开发周期长, 维护成本高。

CS架构的好处:可以将部分的运行转嫁给客户端电脑。

更多关注

​​edu.51cto.com/course/20124.html​​