网络编程-TCP协议(客户端和服务端)

简介: 网络编程-TCP协议(客户端和服务端)

TCP/IP参考模型

代码案例

服务端代码

package com.hidata.devops.paas.udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * @Description :
 * @Date: 2023-09-25 15:21
 */
public class TCPserver {
    public static void main(String[] args) throws IOException {
        //TCP协议,服务端,接收数据
        //1、创建服务端ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(10000);
        //2、监听客户端的连接
        Socket socket = serverSocket.accept();
        //3、从连接通道中获取输入流读取数据
        InputStream inputStream = socket.getInputStream();
        int b;
        while ((b = br.read()) != -1){
            System.out.print((char)b);
        }
        //4、释放资源
        socket.close();
        serverSocket.close();
    }
}

客户端代码

package com.hidata.devops.paas.udp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/**
 * @Description :
 * @Date: 2023-09-25 15:21
 */
public class TCPclient {
    public static void main(String[] args) throws IOException {
        //TCP协议,客户端,发送数据
        //1、创建socket对象,
        //细节:在创建对象的同时,会连接服务器,如果连接不上,代码会报错
        Socket socket = new Socket("127.0.0.1",10000);
        //2、从连接通道中获取输出流对象
        OutputStream os = socket.getOutputStream();
        os.write("你好".getBytes());
        //3、释放资源
        os.close();
        socket.close();
    }
}

运行结果

发现服务端虽然接收到信息了,但是出现中文乱码了

解决中文乱码问题

思路:将字节流转为字符流,来解决中文乱码问题

只改造服务端代码

package com.hidata.devops.paas.udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * @Description :
 * @Date: 2023-09-25 15:21
 */
public class TCPserver {
    public static void main(String[] args) throws IOException {
        //TCP协议,服务端,接收数据
        //1、创建服务端ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(10000);
        //2、监听客户端的连接
        Socket socket = serverSocket.accept();
        //3、从连接通道中获取输入流读取数据
        InputStream inputStream = socket.getInputStream();
        //字节流转为字符流,解决中文乱码问题
        InputStreamReader isr = new InputStreamReader(inputStream);
        BufferedReader br = new BufferedReader(isr);
        int b;
        while ((b = br.read()) != -1){
            System.out.print((char)b);
        }
        //4、释放资源
        socket.close();
        serverSocket.close();
    }
}

运行结果

额外补充

1、TCP协议是面向连接的通信协议(通俗一点来说,就是传输之前,必须确保连接是成功的),正好与UDP协议相反,UDP协议是面向无连接的通信协议

2、传输速度比较慢,没有大小限制,数据比较安全


相关文章
|
4天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
52 20
|
9天前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
19 0
|
2月前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
78 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
2月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
2月前
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。
|
2月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
172 3
|
3月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
94 11
|
3月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
103 3
|
3月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
196 3
|
2月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
86 17

热门文章

最新文章