设为首页 加入收藏

TOP

Linux下c语言TCP多线程聊天室(二)
2019-09-03 02:42:15 】 浏览:115
Tags:Linux 语言 TCP 线程 聊天室
; write(clifd[clifd_index],link,strlen(link)
+1); online_num++; } } else { continue; } if(0 > clifd[clifd_index]) { perror("accept"); continue; } printf("clifd:%d\n",clifd[clifd_index]); // 创建子线程 pthread_t pid1,pid2; pthread_create(&pid1,NULL,start_read,&clifd[clifd_index]); pthread_create(&pid2,NULL,start_write,&clifd[clifd_index]); usleep(1000); // printf("clifd:%d\n",clifd[index]); clifd_index++; // 下标逐渐+1,这样写不是很合适 } return 0; }

 

客户端:client.c

#include <stdio.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>

void* start_read(void* arg) // 读取信息
{
    int sockfd = *(int*)arg;
    char buf[1024] = {};
    for(;;)
    {
        read(sockfd,buf,sizeof(buf));
        if(strlen(buf) != 0)
        {
            printf("\n>%s\n",buf);
        }
    }
}

int main()
{
    printf("服务器创建socket...\n");
    int sockfd = socket(AF_INET,SOCK_STREAM,0);
    if(0 > sockfd)
    {
        perror("socket");
        return -1;
    }

    printf("准备地址...\n");
    struct sockaddr_in addr = {};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(6008);//设置的端口号
    addr.sin_addr.s_addr = inet_addr("10.0.2.15");//你的ip地址(或服务器的公网ip)
    socklen_t len = sizeof(addr);

    printf("绑定连接服务器...\n");
    if(connect(sockfd,(struct sockaddr*)&addr,len))
    {
        perror("connect");
        return -1;
    }

    
    char link[50] = {};
    read(sockfd,link,sizeof(link));
//    printf("link:%s\n",link);
    if(strstr(link,"您已经成功连接")==NULL)
    {
        printf("连接人数已满,请稍后重试\n");
        return 0;
    }
    else
    {
        printf("link:%s\n",link);
    }

    // 创建读取子线程
    pthread_t pid;
    pthread_create(&pid,NULL,start_read,&sockfd);

    for(;;)
    {
        char buf[1024] = {};
        usleep(1000);
        //printf(">我说:");
        gets(buf);
        write(sockfd,buf,strlen(buf)+1);
        if(0 == strcmp("quit",buf))
        {
            printf("通信结束!\n");
            break;
        }
    }
    
    close(sockfd);
}

 

 
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言编程入门之--第五章C语言基.. 下一篇C语言编程入门之--第五章C语言基..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目