小蚂蚁 发表于 2021-12-12 13:55:14

#yyds干货盘点#网络编程简单demo记录

网络编程
server
网络编程头文件

/*/*int socket(int domain, int type, int protocol) 需要的头文件eg:    int sockfd = socket(AF_INET, SOCK_STREAM, 0);            ↓         ↓       ↓                ipv4协议    流式套接字具体类型协议*/#include <sys/types.h>         #include <sys/socket.h>/*inet_aton,inet_addr,inet_network, inet_ntoa,inet_makeaddr, inet_lnaof, inet_netof接口需要的头文件*/#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>



server网络编程流程

[*]创建socket
[*]绑定信息(bind)
[*]设置监听队列(listen)
[*]接受连接(建立TCP连接)(accpet)
[*]创建socket
//创建socketint sockfd = socket(AF_INET, SOCK_STREAM, 0);   //(ipv4协议,流式套接字,具体的协议类型)if(-1 == sockfd){    perror("socket");    exit(1);}/*    setsockopt设置SO_REUSEADDR。    socket关闭之后并不会立即收回,而是要经历一个TIME_WAIT的阶段。windows下最多可以达到4分钟。    所以在这个时候对这个端口进行重新绑定就会出错。所以需要先设置 SO_REUSEADDR.    或者在closesocket的时候,使用setsockopt设置SO_DONTLINGER。也不会有TIME_WAIT的阶段.    通常使用这个设置来加强网络程序的健壮性。*/int opt = 1;setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));    //地址可以被重复绑定struct sockaddr_in server_addr; //保存服务器的消息memset(&server,0,sizeof(server_addr));server_addr.sin_family = AF_INET;   //协议族server_addr.sin_port = 8000;      //端口server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");   //地址    INADDR_ANY->所有地址
[*]绑定信息
int ret = bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));if(-1 == ret){    perror("bind");    exit(1);}
[*]设置监听队列
ret = listen(sockfd, 10);if(-1 == ret){    perror("listen");    exit(1);}
[*]接受连接(建立TCP连接)
printf("等待客户端连接");struct sockaddr_in client_addr; //用于保存客户端消息int length = sizeof(client_addr);int fd = accept(sockfd, (struct sockaddr *)&client_addr, &length);if(-1 == fd){    perror("accpet");    exit(1);}
[*]读取消息
char buf = 0;while(1){    ret = recv(fd, buf, sizeof(buf), 0);    if(-1 == fd){      perror("recv");      exit(1);    }    printf("客户端接受的消息为:");    printf("%s",buf);      memset(buf, 0, sizeof(buf));}
[*]关闭
close(fd);close(sockfd);
client
头文件

#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>client网络编程流程

[*]创建socket
[*]连接(connect)
[*]读取消息
[*]创建socket
int sockfd = socket(AF_INET, SOCK_STREAM, 0);      if(-1 == sockfd){                perror("socket");                exit(1);      }      struct sockaddr_in server_addr;      memset(&server_addr, 0, sizeof(server_addr));      server_addr.sin_family = AF_INET;      server_addr.sin_port = 8000;      server_addr.sin_addr.s_addr = inet_addr("172.25.0.154");}
[*]向服务器发起连接
//向服务器发起连接      int ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));      if(-1 == ret){                perror("connect");                exit(1);      }
[*]读取消息
char buf = {0};      while(1){                printf("请输入你想要发送的信息:");                scanf("%s",buf);                ret = send(sockfd, buf, strlen(buf), 0);                if(-1 == ret){                        perror("send");                        exit(1);                }                if(!strcmp(buf,"bye")){                        break;                }                memset(buf, 0, sizeof(buf));      }
网络编程
server
网络编程头文件

/*int socket(int domain, int type, int protocol) 需要的头文件eg:    int sockfd = socket(AF_INET, SOCK_STREAM, 0);            ↓         ↓       ↓                ipv4协议    流式套接字具体类型协议*/#include <sys/types.h>         #include <sys/socket.h>/*inet_aton,inet_addr,inet_network, inet_ntoa,inet_makeaddr, inet_lnaof, inet_netof接口需要的头文件*/#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.hserver网络编程流程

[*]创建socket
[*]绑定信息(bind)
[*]设置监听队列(listen)
[*]接受连接(建立TCP连接)(accpet)
[*]创建socket

//创建socket      int sockfd = socket(AF_INET, SOCK_STREAM, 0);   //(ipv4协议,流式套接字,具体的协议类型)    if(-1 == sockfd){      perror("socket");      exit(1);    }      /*      setsockopt设置SO_REUSEADDR。      socket关闭之后并不会立即收回,而是要经历一个TIME_WAIT的阶段。windows下最多可以达到4分钟。      所以在这个时候对这个端口进行重新绑定就会出错。所以需要先设置 SO_REUSEADDR.      或者在closesocket的时候,使用setsockopt设置SO_DONTLINGER。也不会有TIME_WAIT的阶段.      通常使用这个设置来加强网络程序的健壮性。    */    int opt = 1;    setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));    //地址可以被重复绑定      struct sockaddr_in server_addr; //保存服务器的消息    memset(&server,0,sizeof(server_addr));      server_addr.sin_family = AF_INET;   //协议族    server_addr.sin_port = 8000;      //端口    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");   //地址    INADDR_ANY->所有地址

[*]绑定信息

int ret = bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));    if(-1 == ret){      perror("bind");      exit(1);    }


[*]设置监听队列
ret = listen(sockfd, 10);    if(-1 == ret){      perror("listen");      exit(1);    }
[*]接受连接(建立TCP连接)

printf("等待客户端连接");    struct sockaddr_in client_addr; //用于保存客户端消息    int length = sizeof(client_addr);    int fd = accept(sockfd, (struct sockaddr *)&client_addr, &length);    if(-1 == fd){      perror("accpet");      exit(1);    }
[*]读取消息

char buf = 0;while(1){    ret = recv(fd, buf, sizeof(buf), 0);    if(-1 == fd){      perror("recv");      exit(1);    }    printf("客户端接受的消息为:");    printf("%s",buf);      memset(buf, 0, sizeof(buf));}


[*]关闭
close(fd);close(sockfd);client
头文件

#include <sys/types.h>          /* See NOTES */#include <sys/socket.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.hclient网络编程流程

[*]创建socket
[*]连接(connect)
[*]读取消息
[*]创建socket

int sockfd = socket(AF_INET, SOCK_STREAM, 0);            if(-1 == sockfd){                  perror("socket");                  exit(1);            }                struct sockaddr_in server_addr;            memset(&server_addr, 0, sizeof(server_addr));            server_addr.sin_family = AF_INET;            server_addr.sin_port = 8000;            server_addr.sin_addr.s_addr = inet_addr("172.25.0.154");    }
[*]向服务器发起连接

//向服务器发起连接            int ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));            if(-1 == ret){                  perror("connect");                  exit(1);            }
[*]读取消息

char buf = {0};                while(1){                  printf("请输入你想要发送的信息:");                  scanf("%s",buf);                  ret = send(sockfd, buf, strlen(buf), 0);                  if(-1 == ret){                            perror("send");                            exit(1);                  }                        if(!strcmp(buf,"bye")){                            break;                  }                        memset(buf, 0, sizeof(buf));            }      ```
[*]关闭
close(sockfd);



https://blog.51cto.com/u_15249901/4787449
页: [1]
查看完整版本: #yyds干货盘点#网络编程简单demo记录