修改后的dg_cli
2022/9/15 23:20:13
本文主要是介绍修改后的dg_cli,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
void dg_cli(FILE *fp, int sockfd, const struct sockaddr * pservaddr, socklen_t servlen) { int n; char sendline[maxline], recvline[maxline+1]; char errbuff[maxline]; struct sockaddr_in localaddr; socklen_t len=sizeof(localaddr); if(connect(sockfd, (struct sockaddr *)pservaddr, servlen)<0) { strerror_r(errno, errbuff, maxline); fprintf(stderr, "connect error: %s\n", errbuff); exit(-1); } while(fgets(sendline, maxline, fp) != NULL) { if((n=write(sockfd, sendline, strlen(sendline)))<0) { strerror_r(errno, errbuff, maxline); fprintf(stderr, "write error: %s\n", errbuff); exit(-1); } if(read(sockfd, recvline, maxline) != n) { strerror_r(errno, errbuff, maxline); fprintf(stderr, "read error: %s\n", errbuff); exit(-1); } if(getsockname(sockfd, (struct sockaddr *)&localaddr, &len)<0) { strerror_r(errno, errbuff, maxline); fprintf(stderr, "getsockname error: %s\n", errbuff); exit(-1); } recvline[n]=0; fputs(recvline, stdout); printf("local ip: %s, local port: %d\n", inet_ntop(AF_INET, &localaddr.sin_addr, errbuff, sizeof(errbuff)), ntohs(localaddr.sin_port)); } }
这篇关于修改后的dg_cli的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享
- 2024-04-14result 成功怎么写-icode9专业技术文章分享
- 2024-04-14stopped 状态设置为变量,由外部传递进来-icode9专业技术文章分享
- 2024-04-14为什么ansible执行远程脚本需要放到后台-icode9专业技术文章分享