day 12 21 网络编程

#include<my_head.h>

#define SERPORT 9999

#define SERIP "192.168.125.4"

#define CLIPORT 8888

#define CLIIP "192.168.125.4"

int main(int argc, const char *argv[])

{

//创建文件描述符

int cfd = -1;

if((cfd = socket(AF_INET,SOCK_STREAM,0)) == -1)

{

perror("");

return -1;

}

int reuse = 1;

if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)

{

perror("");

return -1;

}

struct sockaddr_in cin;

cin.sin_family = AF_INET;

cin.sin_port = htons(CLIPORT);

cin.sin_addr.s_addr = inet_addr(CLIIP);

if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin)) == -1)

{

perror("");

return -1;

}

struct sockaddr_in sin;

sin.sin_family = AF_INET;

sin.sin_port = htons(SERPORT);

sin.sin_addr.s_addr = inet_addr(SERIP);

if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin)) == -1)

{

perror("");

return -1;

}

printf("connect success\n");

fd_set readfds,tempfds;

FD_ZERO(&readfds);

FD_SET(cfd,&readfds);

FD_SET(0,&readfds);

int res = 0;

char rbuf[128]="";

char wbuf[128]="";

while(1)

{

tempfds = readfds;

res = select(cfd+1,&tempfds,NULL,NULL,NULL);

if(res == -1)

{

perror("");

return -1;

}

else if(res == 0)

{

printf("timeout\n");

return -1;

}

if(FD_ISSET(0,&tempfds))

{

bzero(wbuf,sizeof(wbuf));

printf("please input:");

fgets(wbuf,sizeof(wbuf),stdin);

wbuf[strlen(wbuf)-1] == 0;

send(cfd,wbuf,sizeof(wbuf),0);

if(strcmp(wbuf,"quit") == 0)

{

break;

}

}

if(FD_ISSET(cfd,&tempfds))

{

bzero(rbuf,sizeof(rbuf));

int n = recv(cfd,rbuf,sizeof(rbuf),0);

if(n == 0)

{

printf("服务端下线\n");

break;

}

printf("sever:%s\n",rbuf);

}

}

close(cfd);

return 0;

}

相关推荐
2301_773730311 小时前
系统编程—IPC进程间通信
网络·网络协议
代码游侠2 小时前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
Henry Zhu1232 小时前
VPP中ACL源码详解第二篇:ACL数据平面处理
运维·服务器·网络·计算机网络
上河雨滴2 小时前
win11 环境下,有线网络识别问题bug
网络
老蒋新思维2 小时前
创客匠人推演:当知识IP成为“数字心智”的架构师——论下一代认知服务的形态
网络·人工智能·网络协议·tcp/ip·机器学习·创始人ip·创客匠人
逆流°只是风景-bjhxcc3 小时前
【网络】ipv4和ipv6的区别
网络
别动哪条鱼3 小时前
SDL 函数对各对象缓冲区的影响
网络·数据结构·ffmpeg
云计算练习生3 小时前
渗透测试行业术语扫盲(第十六篇)—— 红蓝对抗与演练类
网络·安全·网络安全·信息安全·渗透测试术语
快解析3 小时前
内网穿透快解析注册后添加配置端口教程
linux·服务器·网络
VekiSon4 小时前
Linux系统编程——IPC进程间通信
linux·运维·网络