⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendto_abcmd.h

📁 linux下的人机对话编程
💻 H
字号:
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>	struct sockaddr_in pin_s;	struct hostent *server_host_name_s;void init_port(int port)    {      bzero(&pin_s,sizeof(pin_s));      pin_s.sin_family=AF_INET;      pin_s.sin_addr.s_addr=htonl(INADDR_ANY);      pin_s.sin_addr.s_addr=((struct in_addr*)(server_host_name_s->h_addr))->s_addr;      pin_s.sin_port=htons(port);   }int sendto_ABcmd(char * host_name_s,char *str,int size) {	int port1=8060;	int port2=8065;	int port;	char buf[8192]={};	str[size]='\0';      int socket_descriptor;      int errorcount1=1,recount1=1;      int errorcount2=1,recount2=1;      int errorcount3=1,recount3=1;      int errorcount4=1,recount4=1;      int errorcount5=1,recount5=1;      int export_flag=0;     if(export_flag==0)/*第一个标志用来标志发,如果第一次切换超过三次.则切换端口.再切换三次*/        {while(errorcount1<=3)           {            if((server_host_name_s=gethostbyname(host_name_s))==0)               errorcount1++;             else { port=port1;                    break;                  }           }          if(errorcount1==4)           {	     port=port2;/*真正切换端口*/              export_flag=1;           }        }	init_port(port);       if(export_flag==1)        {while(recount1<=3)              {		if((server_host_name_s=gethostbyname(host_name_s))==0)/*解析主机名*/               recount1++;             else  break;           }        if(recount1==4)           {              printf("Error resolving local host\n");             return -1;            }       } if(export_flag==0)        {while(errorcount2<=3)           {             if((socket_descriptor=socket(AF_INET,SOCK_STREAM,0))==-1)/*套接字创建*/               errorcount2++;/*以下原理同上*/             else  break;           }          if(errorcount2==4)           {              port=port2;              export_flag=1;  }          }        init_port(port);      if(export_flag==1)        {while(recount2<=3)           {             if((socket_descriptor=socket(AF_INET,SOCK_STREAM,0))==-1)                 recount2++;             else  break;          }          if(recount2==4)           {              printf("Error create socket\n");                   return -1;            }        }    if(export_flag==0)        {while(errorcount3<=3)           {             if(connect(socket_descriptor,(void*)&pin_s,sizeof(pin_s))==-1)/*1lianjie*/               errorcount3++;             else  break;          }          if(errorcount3==4)          {              port=port2;              export_flag=1;            }          }	init_port(port);       if(export_flag==1)        {while(recount3<=3)           {               if(connect(socket_descriptor,(void*)&pin_s,sizeof(pin_s))==-1)                 recount3++;               else  break;        }          if(recount3==4)           {              printf("Error connecting  socket\n");                   return -1;            }        }     if(export_flag==0)        {while(errorcount4<=3)           {	     if(send(socket_descriptor,str,size,0)==-1)/*发送*/             errorcount4++;              else  break;           }          if(errorcount4==4)             {              port=port2;              export_flag=1;            }          }	init_port(port);    if(export_flag==1)        {while(recount4<=3)           {              if(send(socket_descriptor,str,size,0)==-1)               recount4++;               else  break;           }          if(recount4==4)           {              printf("Error in send\n");                   return -1;            }        }     if(export_flag==0)        {while(errorcount5<=3)           {	     if(recv(socket_descriptor, buf, 8192, 0)==-1)/*接收*/               errorcount5++;             else  break;           }           if(errorcount5==4)           {              port=port2;              export_flag=1;            }          }	init_port(port);      if(export_flag==1)        {while(recount5<=3)           {               if(recv(socket_descriptor, buf, 8192, 0)==-1)                 recount5++;               else  break;                                                                                                                          }         if(recount5==4)           {              printf("Error in receive\n");                   return -1;            }        }printf("start success!\n");            printf("Response form server:%s\n",buf);      close(socket_descriptor);  return 0;   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -