网络编程(传结构体)
2021/7/20 14:07:03
本文主要是介绍网络编程(传结构体),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
内容同上篇:网络编程 - 西北小蚂蚁 - 博客园 (cnblogs.com)但在上一篇的基础上由只能传字符型到可以传结构体。
一、服务器代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/ip.h> #include <unistd.h> #include <arpa/inet.h> #define N 64 struct tcp { int len; char buf[N]; }QY = {0,"0"}; int main() { //创建socket套接字 int sfd = socket(AF_INET,SOCK_STREAM,0); if(-1 == sfd) { perror("socket"); return -1; } //设置存储IP PORT变量//PORT用来区分进程 struct sockaddr_in sddr,cddr; sddr.sin_family = AF_INET; sddr.sin_port = htons(6666);//PORT用来区分进程一般来说大于5000 sddr.sin_addr.s_addr = inet_addr("0.0.0.0");//自动分配IP//也可以自己设置 int len = sizeof(cddr); //把IP PORT和套接字绑定 if(-1 == bind(sfd,(void *)&sddr,sizeof(sddr))) { perror("bind"); return -1; } //监听套接字 if(-1 == listen(sfd,10)) { perror("listen"); return -1; } puts("listen..."); //创建连接 int nfd = accept(sfd,(void *)&cddr,&len); if(-1 == nfd) { perror("accept"); return -1; } while(1) { read(nfd,&QY,N); printf("%d\n",QY.len); puts(QY.buf); write(nfd,&QY,N); } }
二、客户端代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/ip.h> #include <unistd.h> #include <arpa/inet.h> #define N 64 struct tcp { int len; char buf[N]; }QY = {211,"0"}; int main(int argc,char *argv[]) { if(3 > argc) { printf("argv: %s <IP> <PORT>\n",argv[0]); return -1; } int cfd = socket(AF_INET,SOCK_STREAM,0); if(-1 == cfd) { perror("socket"); return -1; } //设置服务器的IP PORT struct sockaddr_in sddr; sddr.sin_family = AF_INET; sddr.sin_port = htons(atoi(argv[2])); sddr.sin_addr.s_addr= inet_addr(argv[1]); //连接服务器 if(-1 == connect(cfd,(void *)&sddr,sizeof(sddr))) { perror("connect"); return -1; } while(1) { fgets(QY.buf,N,stdin); write(cfd,&QY,N); read(cfd,&QY,N); printf("%d",QY.len); puts(QY.buf); } }
这篇关于网络编程(传结构体)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16使用vue3+springboot构建简单Web应用教程
- 2024-11-15全栈开发项目实战:从入门到初级项目的实现
- 2024-11-15数据库项目实战:从入门到初级应用教程
- 2024-11-15IDEA项目实战入门教程
- 2024-11-15IT编程项目实战:新手入门的全面指南
- 2024-11-15Java开发项目实战:新手入门与初级技巧
- 2024-11-15Java零基础项目实战:从入门到独立开发
- 2024-11-15MyBatis Plus教程:入门与基础操作详解
- 2024-11-15MyBatis-Plus教程:新手入门与实战技巧
- 2024-11-15MyBatis教程:从入门到实践