📄 socketnetserver.c
字号:
#include<netdb.h>#include<netinet/in.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#define MaxCount 5#define Port_Number_One 2501#define Port_Number_Two 2502char String_One[1610];char String_Two[1610];#include "Short_To_String.c"void *FUN_Socket_One()//1通道发送服务端{ int Server_Sockfd; int Client_Sockfd; struct sockaddr_in Server_addr; struct sockaddr_in Client_addr; int sin_size; int len1; if((Server_Sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)//Server_Sockfd代表服务器的套接字 { //它代表服务器 return NULL; } bzero(&Server_addr,sizeof(struct sockaddr_in)); Server_addr.sin_family=AF_INET; Server_addr.sin_addr.s_addr=htons(INADDR_ANY); Server_addr.sin_port=htons(Port_Number_One); if(bind(Server_Sockfd,(struct sockaddr *)&Server_addr,sizeof(struct sockaddr))==-1) { return NULL; } if(listen(Server_Sockfd,MaxCount)==-1) { return NULL; } sin_size=sizeof(struct sockaddr_in); ACCEPT1: if((Client_Sockfd=accept(Server_Sockfd,(struct sockaddr *)&Client_addr,&sin_size))==-1)//Client_Sockfd为请求者的套接字 { //从这开始Client_Sockfd就代表这次请求的客户机 return NULL; } while(1) { if(Mask_AD) { /*发送数据区*/ len1=FUN_Short_To_String1(); if( send(Client_Sockfd,String_One,sizeof(String_One),0)==-1 )//如果客户端断开则返回ACCEPT处等待新的连接请求 { close(Client_Sockfd); goto ACCEPT1; } /*发送数据区*/ } if(!Mark_System_Stop) { close(Server_Sockfd); pthread_exit(NULL); } }//while(1) return NULL; }void *FUN_Socket_Two()//2通道发送服务端{ int Server_Sockfd; int Client_Sockfd; struct sockaddr_in Server_addr; struct sockaddr_in Client_addr; int sin_size; int len2; if((Server_Sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)//Server_Sockfd代表服务器的套接字 { //它代表服务器 return NULL; } bzero(&Server_addr,sizeof(struct sockaddr_in)); Server_addr.sin_family=AF_INET; Server_addr.sin_addr.s_addr=htons(INADDR_ANY); Server_addr.sin_port=htons(Port_Number_Two); if(bind(Server_Sockfd,(struct sockaddr *)&Server_addr,sizeof(struct sockaddr))==-1) { return NULL; } if(listen(Server_Sockfd,MaxCount)==-1) { return NULL; } sin_size=sizeof(struct sockaddr_in); ACCEPT2: if((Client_Sockfd=accept(Server_Sockfd,(struct sockaddr *)&Client_addr,&sin_size))==-1)//Client_Sockfd为请求者的套接字 { //从这开始Client_Sockfd就代表这次请求的客户机 return NULL; } while(1) { if(Mask_AD) { /*发送数据区*/ len2=FUN_Short_To_String2(); if( send(Client_Sockfd,String_Two,sizeof(String_Two),0)==-1 ) { close(Client_Sockfd); goto ACCEPT2; } /*发送数据区*/ } if(!Mark_System_Stop) { close(Server_Sockfd); pthread_exit(NULL); } }//while(1) return NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -