TCP通信实现聊天

基于Java TCP实现高性能网络通信聊天室 本文详细介绍了如何使用Java TCP实现一个功能完整的网络聊天室。我们从基础的Socket编程开始,逐步深入到多线程处理、NIO非阻塞IO、协议设计、图形界面等高级主题,并探讨了性能优化和安全增强的方法。通过这个项目,我们不仅学习了网络编程的核心概念,还实践了多线程编程、IO处理、协议设计、用户界面开发等多个方面的技能。这些知识对于构建任何类型的网络应用程序都是非常有价值的。支持WebSocket协议以实现浏览器客户端添加文件传输和多媒体消息支持实现聊天室频道和私人消息功能。 阅读详情

一、TCP通信的客户端

1、简介

TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据

    表示客户端的类:
        java.net.Socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
        套接字:包含了IP地址和端口号的网络单位

    构造方法:
        Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
        参数:
            String host:服务器主机的名称/服务器的IP地址
            int port:服务器的端口号

    成员方法:
        OutputStream getOutputStream() 返回此套接字的输出流。
        InputStream getInputStream() 返回此套接字的输入流。
        void close() 关闭此套接字。

2、实现步骤

1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号

2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象

3.使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据

4.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象

5.使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据

6.释放资源(Socket)

3、注意

1.客户端和服务器端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象

2.当我们创建客户端对象Socket的时候,就会去请求服务器和服务器经过3次握手建立连接通路,这时如果服务器没有启动,那么就会抛出异常ConnectException: Connection refused: connect,如果服务器已经启动,那么就可以进行交互了

4、代码

//TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据
public class Demo02 {
    public static void main(String[] args) throws IOException {
        //1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
        Socket socket = new Socket("127.0.0.1",8888);
        //2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
        OutputStream os = socket.getOutputStream();
        //3.使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据
        os.write("你好,服务器".getBytes());
        //4.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
        InputStream is = socket.getInputStream();
        //5.使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        //6.释放资源(Socket)
        socket.close();
    }
}

二、TCP通信的服务器端

1、简介

TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据,给客户端回写数据

表示服务器的类:
    java.net.ServerSocket:此类实现服务器套接字。

构造方法:
    ServerSocket(int port) 创建绑定到特定端口的服务器套接字。

服务器端必须明确一件事情,必须的知道是哪个客户端请求的服务器
所以可以使用accept方法获取到请求的客户端对象Socket
成员方法:
    Socket accept() 侦听并接受到此套接字的连接。

2、 服务器的实现步骤:

    1.创建服务器ServerSocket对象和系统要指定的端口号
    
    2.使用ServerSocket对象中的方法accept,获取到请求的客户端对象Socket
    
    3.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
    
    4.使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据
    
    5.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
    
    6.使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据
    
    7.释放资源(Socket,ServerSocket)

3、代码

public class Demo01 {
    public static void main(String[] args) throws IOException {
        //1.创建服务器ServerSocket对象和系统要指定的端口号
        ServerSocket server = new ServerSocket(8888);
        //2.使用ServerSocket对象中的方法accept,获取到请求的客户端对象Socket
        Socket socket = server.accept();
        //3.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
        InputStream is = socket.getInputStream();
        //4.使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        //5.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
        OutputStream os = socket.getOutputStream();
        //6.使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据
        os.write("收到谢谢".getBytes());
        //7.释放资源(Socket,ServerSocket)
        socket.close();
        server.close();
    }
}
C#实现TCP协议聊天程序的完整网络通信项目 System.Net.Sockets 命名空间中包含了多个核心类,它们是构建网络通信的基础。其中,SocketTcpClient和是最常用的三个类,各自适用于不同的场景。Socket提供最底层控制,适用于复杂网络编程。TcpClient和提供简化接口,适用于快速开发。通过本章的学习,我们掌握了Socket编程中客户端与服务端的连接机制、生命周期管理、异常检测以及基础连接测试的方法。下一章将深入讲解如何使用BindListen和Accept。 阅读详情

相关推荐

TCP协议客户服务器方式网络通信对话C++

计算机网络作业,C++编写的,类似于QQ那种但没有那么高级,有客户机服务器,debug运行

TCP协议

TCP通信的客户端代码实现 TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。 套接字:包含了IP地址和端口号的网络单位 构造方法: Socket(String host, int port) 创建一个流套接...

Valentino112358的博客 305

学习记录——SIMPACK生成轨道谱文件的方法

生成轨道谱文件的方法,可以用于实测轨道谱导入和自制轨道谱导入仿真

weixin_51965897的博客 7804

计算机网络:TCP实现聊天功能

计算机网络:使用TCP实现聊天功能

qq_51447436的博客 1万+

全球半导体设备氧化钇熔射服务行业规模预测:预计未来六年CAGR为7.8%

本文将对“半导体设备氧化钇熔射服务”行业进行深度分析,探讨市场趋势的演变、核心竞争者的战略布局、供应链结构的内外特点、研发创新的最新进展、法规政策环境的适应性调整以及投资机会与风险评估。这一稳健的增长趋势表明半导体设备氧化钇熔射服务在电子行业中的重要性逐渐增强。由于全球对于高效、高精度和可靠的电子解决方案的需求增加,对能够提供这些功能的半导体设备氧化钇熔射服务的需求日益增长。由于半导体设备氧化钇熔射服务主要为就地服务型,其“配送”主要依赖于专业团队和技术设备的及时调配,强调服务的时效性和高质量。

CC1239777的博客 570

PyTorch 面试题及详细答案120题(54-70)-- 模型训练与评估

本文介绍了PyTorch模型训练的基本流程和核心概念。主要内容包括: 模型训练基本流程:通过代码示例展示了数据准备、模型定义、损失函数和优化器选择、训练循环(前向传播、反向传播、参数更新)的完整过程,并包含验证集评估的实现。 训练过程中的关键概念: Epoch:完整遍历一次训练集 Batch:将数据分成小批次 Iteration:一个Batch的参数更新过程 三者关系:1 Epoch = N/B Batch = N/B Iteration(N为样本数,B为batch_size) PyTorch数据加载机制:

大剑师兰特的GIS世界 489

通过TCP实现客户端与服务端之间通信

客户端发送的消息,服务端接收并在终端中显示出来。

m0_50027156的博客 2223

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

TCP实现服务器和客户端通信

TCP (Transmission Control Protocol) 是一种面向连接的协议,用于在计算机网络中传输数据。TCP 可以确保数据的可靠传输,即使在网络环境不稳定的情况下也能够保证数据的完整性和顺序。面向连接:在 TCP 通信中,通信的双方必须先建立一个连接,然后才能进行数据的传输。连接的建立需要经过三次握手过程,确保双方都能够进行通信。可靠传输:TCP 可以保证数据的可靠传输,它使用确认和重传机制来确保数据的完整性和顺序。

southernbrid的博客 6045

PyTorch生成式人工智能(1)——神经网络与模型训练过程详解

在本节中,我们介绍了传统机器学习与人工神经网络间的差异,并了解了如何在实现前向传播之前连接网络的各个层,以计算与网络当前权重对应的损失值;实现了反向传播以优化权重达到最小化损失值的目标。并实现了网络的所有关键组成——前向传播、激活函数、损失函数、链式法则和梯度下降,从零开始构建并训练了一个简单的神经网络。

盼小辉丶的博客 1万+

杰理外挂flash使用教程(三): 打包提示音到外部flash(2)

本教程详细介绍了提示音制作与程序配置的全流程规范。提示音制作要求包括:英文命名(8字符内)、单声道转换、标准目录结构(cpu/br23/tools/)及使用user_tone_g.bat脚本生成res.bin资源文件。程序配置需修改:1)启用NOR_FS文件系统;2)调整存储空间;3)配置外置Flash参数;4)增强下载脚本追加资源参数。测试阶段建议替换开机提示音验证功能,扩展开发可参考tone_player.c的索引播放逻辑。所有操作均配有图示说明,关键配置需修改对应头文件和脚本参数。

qq_42014563的博客 587

网络编程——TCP

通过TCP协议传输信息 客户端 获取服务器IP及端口号 连接服务器:实例化一个Socket 发送消息:调用Socket.getOutputStream() 关闭资源 public class TcpClientDemo { public static void main(String[] args) throws UnknownHostException { //1.获取服务器IP及端口 InetAddress inetAddress = InetA

Yellow_Star的博客 436

用 OP-TEE 给 AI 模型“上锁”:密文存储、TEE 解密放行、推理后销毁(实战可落地)

本文提出一种基于OP-TEE的AI模型保护方案,通过两级密钥体系确保模型静态存储为密文,运行时仅在TEE内解密。方案采用KEK+DEK架构,DEK永不出TEE,支持分块解密与可验证擦除。该方案能有效防御静态分析、应用层逆向等威胁,但需承认其物理级攻击的局限性。文章详细描述了端到端架构、文件格式设计及TA实现要点,包括密钥管理、分块解密策略和销毁机制,为设备侧AI部署提供了工程可行的安全解决方案。

Interview_TC的博客 289

c#窗体实现 Socket的TCP通信 聊天室案例

一.Socket(套接字)通信概念   套接字(socket)是通信的基石,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。   应用层通过传输层进...

qq_43552118的博客 3587

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 714

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Code02,端口Port,通信协议,TCP实现聊天

端口Port 通信协议 TCP实现聊天 客户端 服务端

qq_50034199的博客 901

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Qt实现TCP通信(QQ聊天,带源码)

一、客户端 客户端使用Qt中的QTCPSocket类与服务器进行通信可分为5个步骤: ①创建QTcpSocket套接字对象 socket = new QTcpSocket(); ②使用这个对象连接服务器 socket->connectToHost(IP, port); ③使用write函数向服务器发送数据 socket.write(data); ④当socket接收缓冲区有新数据到来时,会发...

華仔的博客 3184

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java网络编程实现TCP-CS通信 UDP聊天

Java网络编程实现TCP-C/S通信 UDP聊天 1.TCP客户端与服务器实现通信 先启动服务器端,再启动客户端 //服务器端 public static void main(String[] args) throws IOException { ServerSocket serverSocket=null; Socket socket=null; InputStreamReader inputStreamReader=null; //启动服

weixin_32629733的博客 380

【C#】WCF和TCP消息通信练习,实现聊天功能

代码】【C#】WCF和TCP消息通信练习,实现聊天功能。

qq_46556714的博客 1703

java学习:Socket通信实现简易网络聊天室——基于TCP协议

文章目录Socket通信实现简易网络聊天室——基于TCP协议功能展示代码展示服务器端代码 Socket通信实现简易网络聊天室——基于TCP协议 Socket协议是基于TCP协议的面向连接的网络通信方式。具有安全可靠、效率相对较低的特点。 功能展示 (1)模拟三个人(AAA、BBB、CCC)在聊天室对话,分别进入聊天室。 (2)有人进入聊天室时,聊天室中的人可以收到系统信息。 (3)某人发送的消息,...

weixin_42924812的博客 1194

TCP通信的实现-优化点对点聊天

点对点聊天优化

m0_73944607的博客 136

Ubuntu下C语言实现TCP通信聊天室功能

Ubuntu下C语言实现TCP通信聊天室功能 去发现同类优质开源项目:https://gitcode.com/ 简介 本项目是一个在Ubuntu环境下使用C语言实现的基于TCP通信的聊天室程序。该程序采用了经典的Client/Server架构,支持用户注册、登录、查看在线用户、发送私密消息、群发消息以及退出保存会话数据等功能。 特性 Client/Server架构:确保了客户端和服务器端的合理分...

gitblog_06787的博客 494

编写myqq即时聊天脚本,实现相互通信(tcp协议)

  编写myqq即时聊天脚本,实现相互通信 主要涉及socket通信,tcp协议 与udp相比,tcp有一些不同。对比见程序中的注释。 udp链接 https://mp.youkuaiyun.com/postedit/83316495 注意:执行时要先运行server端,这也是跟udp的不同之一。   # TCP-Server import socket  # 1. 创建 socket 对...

w_zhanglu的博客 790

linux的qt的tcp通信,QT实现简单的tcp通信聊天工具

QT实现简单的tcp通信聊天工具目录结构: pro文件中添加: 1. tcp_server :1.1 服务器端头文件/******app.h ******/#ifndef APP_H#define APP_H#include #include //*#include //*#include //*QT_BEGIN_NAMESPACEnamespace Ui { class app; }QT_END...

weixin_35418139的博客 1073

Go语言TCP通信实现同时多句聊天

TCP协议为传输控制协议

Mr_Lu_Gu的博客 264

python tcp通信如何实现多人聊天_Python Socket TCP双端聊天功能实现过程详解

SOCKET编程socket(套接字):是一个网络通信的端点,能实现不同主机的进程通信, -通过IP+端口定位对方并发送消息的通信机制分为UDP和TCP客户端Client: 发起访问的一-方服务器端Server: 接受访问的一方UDP编程Server端流程1.建立socket,socket是负贵具体通信的一个实例2.绑定,为创建的socket指派固定的端口和ip地址3.接受对方发送内容4.给对方发...

weixin_39620273的博客 538
上一篇: Java缓存流
下一篇: Java网络编程实现文件上传
不吃辣的IT男
博客等级 码龄7年 6560粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃辣的IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值