Linux下基于socket和多线程的聊天室小程序

Linux利用 Socket 通信实现网络聊天程序 写在前面:大家好,我是草莓橙须圆。毕业之前在CSDN微信公众号活跃 欢迎关注我的公众号:【草莓橙须圆】 微信公众号主要就是更新大学生或者考研党的日常 CSDN主要就是学习Java过程中总结的笔记,以及编程分享 这篇文章主要是给大家分享Linux利用 Socket 通信实现网络聊天程序 1.【问题描述】 在 Linux 环境下,利用 Socket 通信实现网络聊天程序,主要包括以下功能: ⑴ 写一个 shell 脚本,实现聊天界面的显示、用户的注册、登录登录后可显示 用户昵称)、聊天方式的选择等功能。. 阅读详情

要求:基于TCP编写,一个聊天室最多100人。
客户端:
  1、用户需要登录,登录时只需要输入一个昵称即可无需判断昵称是否重复(如果其他功能都ok考虑)
  2、用户登录后连接服务器端,进入聊天室
  3、用户可以输入聊天信息,也可以收到别人的聊天信息。
  4、用户可以用某个特殊单词代表退出聊天室。

服务器端:
  1、启动服务器,开放端口
  2、等待客户端的连接,每连接上一个客户端,启动一个线程
  3、在线程中与客户端交互,交互过程:如果有客户端登录、退出、提交聊天,都应该发给所有的客户端。需要   保存所有客户端。

额外功能:可以考虑实现TCP的文件传输。

server.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <pthread.h>

int sockfd;//服务器socket
int fds[100];//客户端的socketfd,100个元素,fds[0]~fds[99]
int size =100 ;//用来控制进入聊天室的人数为100以内
char* IP = "192.168.10.143";
short PORT = 10222;
typedef struct sockaddr SA;

void init(){
    sockfd = socket(PF_INET,SOCK_STREAM,0);
    if (sockfd == -1){
        perror("创建socket失败");
        exit(-1);
    }
    struct sockaddr_in addr;
    addr.sin_family = PF_INET;
    addr.sin_port = htons(PORT);
    addr.sin_addr.s_addr = inet_addr(IP);
    if (bind(sockfd,(SA*)&addr,sizeof(addr)) == -1){
        perror
Linux下利用socket多线程实现简单网络聊天室 服务端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <pthread.h> #include <semaphore.h> #include <sys/socket.h> #include <netinet/in.h> #includ 阅读详情

相关推荐

linuxsocket的多人聊天室

socket实现一个多人聊天室的思路很简单,即在服务器端定义一个fd的int型数组,用来存储已经连接的客户端的socket连接套接字fd(因为发送接收数据都只要借助连接套接字fd),当服务器接收到来自某一客户端的数据,直接转发给其他所有连接着的客户端,即完成了多人聊天室。 服务器端:多线程进行数据的转发 客户端:创建一个线程专门用来接收数据,主线程进行输入数据等操作 下面直接贴代码:

gepanqiang3020的博客 1万+

linux c tcp socket 多线程简易聊天室

linux c tcp socket 多线程 简单聊天室 ,服务器端负责转发,代码很简陋有待改进

手把手带你用Linux socket写出聊天室demo

基于Tcp协议的网络程序 基于tcp协议的网络程序流程图如下: ) 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态 客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答 服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同应答一个ACK段,服务器收到后从accept...

D-lyw 3676

Linux下用Socket多线程实现简单聊天室

Linux下用Socket多线程实现简单聊天室

基于linuxsocket多人聊天室程序,采用posix多线程控制技术

基于linuxsocket多人聊天室程序,采用posix多线程控制技术。客户端服务器采用协议机制通信,服务器端在用户上线下线更新在线人数,并打印上下线信息(用户名)。客户端登陆输入用户名,若用户名已存在则让用户重新登陆。客户端也有即显示好友上线下线信息功能。

基于linuxsocket聊天室

本项目实现了在Linux下简单的socket网络聊天室。在linux下编写并调试服务器端程序客户端程序,实现了服务器、客户端之间的连接通信。可以在单机上开辟两个终端窗口分别运行客户、服务器端的程序,或者将两台主机连接分别作为客户服务器的方式。在技术实现上,本项目主要使用网络套接字socket多线程技术在网络中的应用。本项目经gcc编译器gdb调试器调试成功,可以在局域网的网络聊天中使用

Linux网络】基于UDP的Socket编程,实现简单聊天室

本文介绍了基于UDP协议实现的简单聊天室程序。客户端通过sendto发送消息,recvfrom接收消息,并使用多线程实现并行收发。服务器端通过recvfrom接收消息,使用vector维护在线用户列表,并通过线程池将消息转发给所有在线用户。主要实现了登录识别、消息转发退出处理功能,其中首次发送消息视为登录,"QUIT"消息触发退出。文章详细阐述了客户端服务器的实现思路,并提供了关键代码模块,包括UDP套接字创建、消息收发、在线用户管理以及线程池优化等内容。最后还对IP地址端口号转换

记录学习与成长 5006

Linux Socket编程】——使用多线程,实现简单的聊天室(TCP协议),手把手教你如何使用

操作系统:Linux 编程语言:c语言 应用技术:socket编程(TCP协议)、多线程 实现功能:简单的聊天室(服务器端与客户端可以相互收发消息) 简要概述 如何建立连接,即socket编程的创建流程,请查看socket编程流程 (完整代码在最后) 服务器端与客户端收发数据相同 建立好连接后,创建两个线程 send_thread:用于发送数据,执行发送函数 recv_th...

她的坏机器人 6502

嵌入式linux项目介绍与分享-基于 LinuxSocket 网络编程的局域网聊天室

本项目是基于 LinuxSocket 网络编程的局域网聊天室,实现了账号注册与登录、私聊消息、群发消息、发送离线消息、查看聊天记录、修改昵称密码等功能,并设置管 理员,实现将用户禁言、解禁、踢出聊天室等,采用多线程并发服务器模型处理多个客户端的同连接请求,服务器创建并管理用户数据、在线用户数据、聊天数据、离线消息数据等 SQlite 数据库,并提供后台服务,客户端通过 TCP 协议建立与服务器的稳定连接,并通过格式化输入输出实现与用户的交互。

szq0909的博客 3595

Linux ubuntu18.04下socket聊天室 私聊 群聊

这个聊天室写出来也有一段间了 先来几张效果图 进入界面 登录成功界面 群聊三个客户端界面 群聊服务器打印信息: mysql数据库里存放的用户信息: 首先要懂几个东西就是 socket网络编程 mysql的增删改查 多线程IO复用的一点皮毛就没了 首先 socket网络编程就下面几个步骤 定义 绑定 设置最大监听数 监听等待连接 收发信息 还有就是mysql 的...

花先生的博客 3056

从0实现基于Linux socket聊天室-实现聊天室的公聊、私聊功能-4

上文中,我们基于多线程的框架,实现了注册登录的功能,这一章,我们在此基础上来实现公聊、私聊、显示在线用户列表功能。 客户A:yikoulinux 客户B:yikoupeng 运行截图 公聊 客户B发公聊 客户A收到信息: 服务器log: 私聊 客户B私发信息给A: 客户A收到的消息: 显示在线用户信息 ...

一口Linux的专栏 2730

实现基于Linux网络编程+多线程编程的简易网络聊天室

众所周知,网络聊天室的应用已经融入我们生活的方方面面,微信、QQ、飞书等等,这篇文章介绍如果利用套接字编程(网络编程)+多线程编程实现一个简易的网络聊天室。相信通过对这个网络聊天室的编写,我们可以对网络编程多线程编程相关知识有更进一步的了解。当然这个网络聊天室还有非常多可以完善的地方,比如加入线程池、完善收发机制等等。

Leon_Chenl的博客 2423

Linux下基于UDP的简易多人聊天室创建——群聊、私聊、上线通知(Socket编程)

Linux下基于UDP的简易多人聊天室创建(Socket编程)OSITCP/IP:关于TCP/IP协议关于UDP协议UDP编程的一般步骤[^2]Socket套接字网络编程UDP网络聊天室实现功能概述服务器编程客户端编程运行结果总结遇到的问题服务器编程客户端编程 OSITCP/IP: OSI 模型本身不是网络体系结构的全部内容,它并未确切地描述用于各层的协议服务,仅提出每一层应该做什么。不过OSI 已经为各层制定了标准,但并不是参考模型的一部分,而作为单独的国际标准公布的。 TCP/IP 是一组用于实现

qq_43212988的博客 7579

Linux socket聊天室

socket多线程

weixin_46829095的博客 2302

从0实现基于Linux socket聊天室-多线程服务器模型-1

前言 Socket在实际系统程序开发张中,应用非常广泛,也非常重要。实际应用中服务器经常要支持多个客户端连接,实现高并发服务器模型显得尤为重要。 常见的并发服务器模型 select 1 一个误区很多人认为它最大可以监听1024个,实际上却是文件描述符的值不能大于等于1024,所以除掉标准输入、输出、错误输出,一定少于1024个,如果在之前还打开了其他文件,那会更少 2 select返回后,一般要轮询fd_set,发现新连接要加上,连接断开要去掉,这个过程一定要这样做:select之前把fd_set临拷贝

一口Linux的专栏 2746

Linux环境,C语言实现聊天室

写在前面:这个小项目运用了socket技术,可以先学习一下socket的基本函数用法再看代码~ socket详解 网络聊天室业务逻辑: 1、客户端注册名字 2、告诉所有的在线的客户端,XXX进入聊天室。 3、新建一个线程为该客户端服务,随接收客户端发送来的内容。 4、当收到一个客户端的消息,向每个客户端都转发一份(群聊)。 5、同在线人数最多50人。 注意:任何客户端都应该可以随进入退出。 客户端 #include <stdio.h> #include <stdlib.h&g

liuxinyullll的博客 3606
上一篇: 线程初步(2) —— 线程同步
下一篇: 数据结构(1)—— 数据结构的三大结构
Robot__Man
博客等级 码龄12年 251粉丝 109原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值