基于 TCP 实现简易聊天室

LinuxC TCP实现简易聊天室 纯c语言实现聊天室,采用TCP协议实现聊天室注册登录,消息收发,注册vip,禁言,踢人等功能,项目主要运用数据库进行操作。 阅读详情

在这里插入图片描述


阅读原文


前言

TCP 为传输层协议,在 NodeJS 中,基于 TCP 的核心模块为 net,http 和 https 模块都是基于 net 实现的,我们先简单介绍 net 的用法,再根据 net 实现一个简易的聊天室。


net 模块的基本用法

1、使用 net 创建一个网络服务

方式 1:

const net = require("net");

// 创建 TCP 服务
const server = net.createServer(function(socket) {
   
   
    // ......
});

server.listen(3000);

方式 2:

const net = require("net");

// 创建 TCP 服务
const server = net.createServer();

// 监听连接
server.on("connection", function(socket) {
   
   
    // ......
});

server.listen(3000);

上面两种创建网络服务的方式第二种更常用,回调函数的参数都为 socket(套接字),在产生连接时执行,每产生一个连接就会产生一个 socket,我们也可以将 socket 理解为客户端。

如果现在使用浏览器连接这个服务可以成功接收到请求,但浏览器是 http 协议,不识别,所以不会有任何响应。

2、使用 TCP 模拟 http

const net = require("net");

// 创建 TCP 服务
const server = net.createServer();

// 监听连接
server.on("connection", function(socket) {
   
   
    // 设置编码
    socket.setEncoding("utf8");

    // 读取请求报文
    socket.on("data", function(data) {
   
   
        console.log(data);
    });

    // 给浏览器返回响应报文
    socket.write(`
HTTP/1.1 200 ok
Content-Length: 5

hello
    `);
});

server.listen(3000);

// GET /favicon.ico HTTP/1.1
// Host: localhost:3000
// Connection: keep-alive
// Pragma: no-cache
// Cache-Control: no-cache
// ...... 后面省略

soket 是一个可读可写流 Duplex(双工流),所以既可以读取来自浏览器的请求信息,又可以写入响应信息,在模拟 http 时需遵循 http 协议规则,每行前面不允许有空格或制表符,响应头与响应正文之间需空一行。

此时启动服务,使用浏览器访问 localhost:3000 可以在控制台打印请求报文,并在浏览器中显示 hello。

http 的头部信息可以通过命令窗口中使用 curl 发送请求进行查看,输入命令为 curl -v http://.....,默认命令行窗口是不支持 curl 命令的,请在 curl 官网 下载系统对应的版本,在 Windows 系统中,下载后的压缩包解压后将 curl.exe 和 ca-bundle.crt 拷贝至 C:\Windows\System32 或将所在文件夹添加至系统环境变量。

3、server、socket 的属性和方法

在 TCP 创建的服务 server 和连接中的 socket 本身具有一些属性、方法和事件,我们通过下面这个例子来介绍。

const net = require("net");

// 创建 TCP 服务器
const server = net
【Java】- TCP、UDP协议实现简易聊天室 简易聊天室数据设计 数据设计 必要条件:客户端、服务器端 必要约束:数据传输协议,使用尾部追加换行结束符 原理:服务器端监听消息来源,客户端连接服务器并发送消息到服务器 多类型客户端:一客户端发送消息给服务器端,服务器端将该消息转发给其他客户端,实现客户端之间的通信。 核心是数据转发协议。 ... 阅读详情

相关推荐

用java实现简易聊天室(TCP)

package cn.tedu.net.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.util.Scanner; public class UDPChatDemo { public static void main(String[] args) { .

dwt_981208的博客 914

软件各项会议评审意见模版

读梅老师主编的书,觉得评审意见模板很有参考价值和实用价值,帮梅老师安利一波,顺便记一下笔记。 《系统/子系统规格说明》评审意见模板 20XX年XX月XX日,XXX(主管机关)在XXX(会议地点)主持召开了“《XXX(产品名称)系统规格说明》评审会”。参加会议的有XXX机关,XXX院校,XXX研究所共XX名代表(名单见附件1),会议成立了评审组(名单见附件2),听取了XXX(单位)做的《XXXX报告》。经讨论质询,形成评审意见如下: 系统规格说明对系统的研制目标和范围、工作状态、运行方式以及所要满足的能力需

赵星汉同学的博客 1万+

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 514

NVIDIA 2025 Board Design Engineer 校招笔试全解析:从基础门电路到理想放大器设计

本文详细解析了NVIDIA 2025届板级设计工程师校招笔试的核心考点与解题策略。内容涵盖从基础门电路、CMOS实现NOR门,到开关电源CCM/DCM模式波形分析与效率计算,以及理想运放电路设计与稳定性优化。旨在帮助考生构建硬件知识体系,掌握工程思维,顺利通过NVIDIA Board Design Engineer校招笔试。

weixin_29172201的博客 195

Netapp FAS2750更换磁盘后不同步问题处理

netapp fas2750磁盘更换后不同步问题处理

jetliu05的博客 1256

C语言实现惯导系统的间接粗对准

间接粗对准方法具有更好的角晃动抗干扰能力,只是在短时间内线晃动抗干扰能力相对弱些,若适当延长粗对准时间(一般在分钟量级),间接粗对准方法往往都能够取得良好的效果。间接粗对准方法是一种非常实用的捷联惯导粗对准方法,得到了广泛的应用。在惯导系统进入工作前,需要进行初始对准,使得惯导系统与当地导航坐标系指向一致,便于惯导系统更好地进入工作状态。博主利用C语言实现了间接粗对准,间接粗对准较之解析粗对准更有优势。以上函数中使用的其他函数块,已在之前或之后的博客中给出。

十八与她的博客 789

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

宁波阿成的博客 902

​网格划分理论:CFD理论67 网格划分-三大理论问题_哔哩哔哩_bilibili传统解释非结构化网格是不对的——计算传热学大叔专题讨论2--CFD网格类型_哔哩哔哩_bilibili

传统解释非结构化网格是不对的——计算传热学大叔。fluent计算理论和离散方法原理视频推荐。

qq_15963745的博客 183

在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测

本文将详细介绍如何在 Esp32 摄像头上实现边缘脉冲 FOMO 物体检测,并提供实现源码

DT程序员的博客 705

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 使用 NodeJS 可读流实现 “行读取器”
下一篇: HTTP 基础
Panda Shen
博客等级 码龄10年 18粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值