C语言实现匿名聊天(客户端之间)

客户端

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>#define SER_IP "192.168.1.116"
void* send_func(void* arg);
void* recv_func(void* arg);int main()
{int sockfd = socket(AF_INET,SOCK_STREAM,0);if(0 > sockfd){perror("socket");return -1;}struct sockaddr_in addr = {};addr.sin_family = AF_INET;addr.sin_port = htons(7767);addr.sin_addr.s_addr = inet_addr(SER_IP);socklen_t len = sizeof(addr);if(connect(sockfd,(struct sockaddr*)&addr,len)){perror("bind");return -1;}pthread_t pid1;pthread_create(&pid1, NULL, recv_func, &sockfd);pthread_create(&pid1, NULL, send_func, &sockfd);      void* p = NULL;pthread_join(pid1, &p);
}void* recv_func(void* arg)
{int sockfd = *(int*)arg;char buf[1024] = {};for(;;){read(sockfd,buf,sizeof(buf));printf("%s\n",buf);}
}void* send_func(void* arg)
{printf("what is your name :");char name[20] = {};gets(name);int sockfd = *(int*)arg;char buf[1024] = {};char buf1[2048] = {};for(;;){gets(buf);sprintf(buf1,"%s:%s",name,buf);write(sockfd,buf1,strlen(buf1)+1);if(0 == strcmp("quit",buf)){printf("quit\n");pthread_exit(NULL);}}
}

服务器

#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>int a[128];bool exit(int fd)
{int i;for( i=0; a[i]; i++){if(fd == a[i]) return true;}return false;
}void* func(void* arg)
{int newfd = *(int*)arg;char buf[1024] = {};int i;while(true){read(newfd,buf,sizeof(buf));printf("%s\n",buf);if(0 == strcmp("quit",strchr(buf, ':')+1)){close(newfd);pthread_exit(NULL);}for(i=0; a[i]; i++){if(a[i] != newfd){write(a[i],buf,strlen(buf)+1);}}}
}int main()
{int sockfd = socket(AF_INET,SOCK_STREAM,0);if(0 > sockfd){perror("socket");return -1;}struct sockaddr_in addr = {};addr.sin_family = AF_INET;addr.sin_port = htons(7767);addr.sin_addr.s_addr = htonl(INADDR_ANY);socklen_t len = sizeof(addr);if(bind(sockfd,(struct sockaddr*)&addr,len)){perror("bind");return -1;}if(listen(sockfd,128)){perror("listen");return -1;}int num = 0;printf("wait...\n");while(true){struct sockaddr_in client_addr = {};int newfd = accept(sockfd,(struct sockaddr*)&client_addr,&len);if(0 > newfd){perror("accept");continue;} if(!exit(newfd)){a[num++] = newfd;}pthread_t pid;pthread_create(&pid, NULL, func, &newfd);}
}

C语言实现匿名聊天(多客户端一服务器)相关推荐

  1. qq聊天信息服务器,golang实现qq聊天之客户端与服务器

    一.用到的net方法 1 .客户端: var buf [512]byte tcpAddr, _ := net.ResolveTCPAddr("tcp", "127.0.0 ...

  2. 基于Python语言、RSA非对称加密的IRC聊天室客户端

    源码地址: (55条消息) 基于Python语言.RSA非对称加密的IRC聊天室客户端源码与应用程序-Python文档类资源-CSDN文库 1 研究背景和现状 IRC是Internet Relay C ...

  3. 14个同陌路人匿名聊天在线工具排除你的寂寞和无聊

    感谢saas114的投递 寂寞无聊干嘛呢?特别是在网络上,找一个陌生的人聊聊天,显然是一个较好的注意,而基于web的匿名聊天工具,为你提供了极大的方便,让你打开网页就可以和一个从不相互认识的人聊天,肆 ...

  4. C语言实现网络聊天室 socket的简单应用

    C语言实现网络聊天室 socket的简单应用 前言:环境是Linux ,使用了 socket和pthread,主要分为服务器端和客户端两部分,服务器端监听端口发来的请求,收到后向客户端发送一个消息,客 ...

  5. C语言实现Linux聊天工具

    项目源码:https://github.com/One-Snail/mychatroom 引言 在互联网越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网 络,QQ.微软MSN.移动的Feti ...

  6. TCP 聊天室v2 实现多人匿名聊天 C++,linux系统下

    使用select IO复用实现多人匿名聊天室(linux系统下) 功能:用户可发送消息,并同时能看到其他用户发的消息,用户输入over退出 实现思路: 服务端仅作为消息的中转方,使用select管理所 ...

  7. Linux网络编程:用C语言实现的聊天程序(同步通信)

    通过TCP协议,用C语言实现的同步聊天程序,注释写的比较详细,个人觉得对字符串处理比较充分,能够正常编译运行,拿出来和大家分享一下! 1.客户端源代码: [cpp] view plaincopypri ...

  8. Yep (对头)-盲盒社交,匿名聊天

    聊天网址(用手机浏览器打开哦): http://www.findmechat.net Yep!(对头)是一个非常受欢迎的随机.异性.匿名交友社区.随机聊天,同城匹配,帮助用户结识互有好感的新朋友 使用 ...

  9. java聊天程序_急需一个用java 语言写的聊天程序

    展开全部 客户端: package chatroom; import java.awt.*; import java.awt.event.*; import java.net.*; import ja ...

最新文章

  1. arcgis里python窗口运行,在 Python 窗口中执行工具
  2. 上周热点回顾(10.27-11.2)
  3. OpenStack Placement Project(Rocky to Train)
  4. Linux——进程信号(总结)
  5. iOS之NSAttributedString-------字符属性
  6. Android自定义RadioButton
  7. 信息学奥赛一本通 1083:计算星期几 | OpenJudge NOI 小学奥数 7831
  8. jmeter.bat双击闪退问题
  9. GRIDVIEW 中当数据行数未满时,填充空白行
  10. Java程序员从笨鸟到菜鸟(三)算法笔试题
  11. debug and releas 不显示 调试窗口(DOS窗口/控制台)
  12. 雷霆战机单机老版本_雷霆战机下载_雷霆战机电脑版单机游戏下载
  13. 微信小商店购物组件接入现有的小程序,在开发者工具中使用
  14. 口算加密php怎么使用,从数盲到口算 ——带你玩转RSA加密算法(一)
  15. Linux下获取cpu温度
  16. 12306从上海到湖南境内的终点站车次或从湖南境内始发到上海的车次
  17. 【Babylon提升】重写相机控制器,实现仿地图操作
  18. 电动汽车智能充电桩的设计分析
  19. 使用@JsonFormat的一个坑,遇到了同样的问题,jsonfomat注解失效
  20. uboot命令实践:fat系列命令实践

热门文章

  1. 华为中软国际智造云隆重亮相南京软博会并与江苏龙头企业达成战略合作
  2. GNSS及其定位原理,差分GNSS技术分析
  3. 疯狂复习半个月,BAT大厂面试总结
  4. oj记录 牛客小I白月赛50 C减法与求余 (思维
  5. 使用Docker安装Nginx并配置端口转发
  6. YOLOv3反向传播原理 之 全流程源码分析
  7. 同城配送上线淘宝天猫!接入蜂鸟即配、UU跑腿、顺丰同城等四家平台
  8. vue双向绑定不生效、对象中的属性值发生改变页面不会重新渲染问题解决办法
  9. python2.7环境搭建_Python2.7环境配置及项目建立
  10. 二、半天时间掌握Dart开发语言-类的学习