📄 qcc.c
字号:
#include <stdio.h>#include <sys/types.h> #include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>#include <string.h>#include <sys/select.h>#define max(x,y) (((x)>(y))?(x):(y))#define ip1 "10.100.0.5"#define ip0 "10.100.0.9"int n,m;int maxfd;main(){struct sockaddr_in lo,se;int sock,socklen;char c;char msg[255];fd_set infds;socklen=sizeof(struct sockaddr_in);sock=socket(AF_INET,SOCK_DGRAM,0);if(sock<0){ printf("连接失败\n"); exit(1);}memset(&lo,0,socklen);lo.sin_family=AF_INET;lo.sin_port=htons(6800);if(inet_pton(AF_INET,ip0,&lo.sin_addr)<=0){ printf("本方IP地址错误\n"); exit(2);}memset(&se,0,socklen);se.sin_family=AF_INET;se.sin_port=htons(6800);if(inet_pton(AF_INET,ip1,&se.sin_addr)<=0){ printf("对方IP地址错误\n"); exit(3);}if(bind(sock,(struct sockaddr *)&lo,socklen)<0){ printf("不能运行两个QQ,或端口出错 \n"); exit(0);}if(connect(sock,&se,socklen)<0){printf("连接失败\n");exit(0);}for(;;){ FD_ZERO(&infds); FD_SET(fileno(stdin),&infds); FD_SET(sock,&infds); maxfd=max(fileno(stdin),sock)+1; if(select(maxfd,&infds,NULL,NULL,NULL)==-1) { printf("多路复用错误\n"); exit(3); } if(FD_ISSET(sock,&infds)); { m=read(sock,msg,256); if((m==-1)||(m==0)) { printf("读端口数据出错\n"); exit(0); } else { msg[m]=0; printf("对方:%s",msg); } } if(FD_ISSET(fileno(stdin),&infds)) { if(fgets(msg,255,stdin)==NULL) { printf("talk over\n"); exit(0); } write(sock,msg,strlen(msg)); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -