Linux C 多人网络聊天室(UDP)

来源:互联网 发布:medline数据库论文 编辑:程序博客网 时间:2024/05/16 18:59

Linux C 多人网络聊天室(UDP)

任何直接甩代码的都是耍流氓!

一、客户端设计

客户端实现简单流程图

这里写图片描述

1.创建连接套接字

ConnectSocket()函数在socket.c中实现

sClient = ConnectSocket(serverIp, serverPort, "udp");if(sClient == -1){    ErrorHandler("ConnectSocket() Faild\n");    return -1;}

2.用户注册具体实现

/* * 用户注册,直到注册成功 *@ 无返回值*/void UserRegister(int socketfd){    int successFlag = 0;    int iLen;    char username[20];    char password[20];    while(!successFlag)    {        printf("请输入你的用户名(由字母、数字或下划线组成):");        scanf("%s",username);        printf("请输入你的密码(由字母、数字或下划线组成):");        scanf("%s",password);        /*发送到服务器*/        int ret = Post(socketfd, ACTION_REGISTER , username, password, "reister");        //recv from server register information        char recvBuf[DATA_BUFFER_SIZE];        int iLen = Get(socketfd, recvBuf);        printf("%s\n", recvBuf);        if(strcmp(recvBuf,"[+]success\n") == 0)        {            printf("恭喜你,注册成功\n");            successFlag = 1;        }        else        {            printf("重新输入\n");        }    }}

3.登录聊天室

在聊天室中,需要接收其他用户发送的信息,同时也需要读取自身的键盘输入,所以关键在于多线程的实现。
在这里我使用pthread来实现。

POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程.

pthread_t getInputPID;//开启线程if(pthread_create(&getInputPID,NULL,ChatPost, (void * )&socketfd)){    ErrorHandler("开启线程失败\n");    return -1;}

完整源程序可以访问Linux C 客户端服务器源程序_Github

原创粉丝点击