C++入门教程(18)socket 实现简单聊天室

这篇教程介绍了如何使用C++通过socket创建一个简单的聊天室应用。客户端用于发送消息,服务端负责接收并转发消息给所有客户端。通过Xcode编译运行,实现了多客户端之间的文字交流。
摘要由CSDN通过智能技术生成

本节通过socket实现一个简单的聊天室功能

聊天室中如果有人说话,则服务器负责将内容传送给聊天室的其他人

那么就需要客户端和服务端两个程序,客户端负责发送消息,服务端负责接收和转发消息

客户端代码:



#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/shm.h>
 
#define MYPORT  8606
#define BUFFER_SIZE 1024
int main()
{
    int sock_cli;
    fd_set rfds;
    struct timeval tv;
    int retval, maxfd;
 
    ///定义sockfd
    sock_cli = socket(AF_INET,SOCK_STREAM, 0);
    ///定义sockaddr_in
    struct sockaddr_in servaddr;
    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(MYPORT);  ///服务器端口
    
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");  ///服务器ip
    
    
    //连接服务器,成功返回0,错误返回-1
    
    if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
    {
        perror("connect");
        exit(1);
    }
 
    while(1){
        /*把可读文件描述符的集合清空*/
        FD_ZERO(&rfds);
        /*把标准输入的文件描述符加入到集合中*/
        FD_SET(0, &rfds);
        maxfd = 0;
        /*把当前连接的文件描述符加入到集合中*/
        FD_SET(sock_cli, &rfds);
        /*找出文件描述符集合中最大的文件描述符*/
        if(maxfd < sock_cli)
            maxfd = sock_cli;
        /*
  • 9
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
C语言和Socket可以实现多人聊天室。 在C语言中,可以使用Socket编程来实现网络通信功能。Socket是一种网络通信的API,可以通过创建套接字(socket)来进行数据传输和通信。 实现多人聊天室的主要步骤如下: 1. 创建服务器端程序:首先,需要创建一个服务器端程序,用于接收和处理客户端的连接请求。服务器端程序可以创建一个套接字,并进行绑定、监听等操作,用于等待客户端的连接请求。 2. 创建客户端程序:然后,需要创建多个客户端程序,用于连接服务器并进行聊天。客户端程序可以通过创建套接字,并与服务器端建立连接,然后进行聊天和数据交换。 3. 客户端与服务器端的通信:一旦客户端和服务器端建立了连接,它们就可以通过套接字进行数据的传输和通信。客户端可以向服务器发送消息,服务器可以接收并处理这些消息,然后将消息转发给其他客户端。 4. 多人聊天实现:为了实现多人聊天功能,服务器端需要维护一个客户端列表,用于存储连接到服务器的所有客户端。当某个客户端发送消息时,服务器可以将消息发送给所有其他客户端,从而实现多人聊天的效果。客户端也可以接收其他客户端发送的消息,并进行展示。 总结来说,使用C语言和Socket编程可以实现多人聊天室。服务器端负责接收和处理连接请求,并转发消息给其他客户端;客户端负责连接服务器,并发送、接收和展示消息。这样就可以实现多个用户之间的实时聊天。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱我呦呦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值