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

📄 socket_b.h

📁 linux下的人机对话编程
💻 H
字号:
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>     struct sockaddr_in pin;     struct hostent *server_host_name;void init_socket(int port)    {      bzero(&pin,sizeof(pin));      pin.sin_family=AF_INET;      pin.sin_addr.s_addr=htonl(INADDR_ANY);      pin.sin_addr.s_addr=((struct in_addr*)(server_host_name->h_addr))->s_addr;      pin.sin_port=htons(port);   }int socket_comb(char *host_name,char *str){      int port1=8000;      int port2=8010;      int port;      char buf[8192]={};      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=gethostbyname(host_name))==0)               errorcount1++;             else { port=port1;                    break;                  }           }          if(errorcount1==4)           {             port=port2;             export_flag=1;           }        }         init_socket(port);        if(export_flag==1)        {while(recount1<=3)              {            if((server_host_name=gethostbyname(host_name))==0)               recount1++;             else  break;                                                               }        if(recount1==4)           {		close(socket_descriptor);		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_socket(port);      if(export_flag==1)        {while(recount2<=3)           {             if((socket_descriptor=socket(AF_INET,SOCK_STREAM,0))==-1)                 recount2++;             else  break;          }          if(recount2==4)           {		close(socket_descriptor);                printf(": Error create socket\n");		return -1;            }        }    if(export_flag==0)        {while(errorcount3<=3)           {             if(connect(socket_descriptor,(void*)&pin,sizeof(pin))==-1)               errorcount3++;             else  break;            }          if(errorcount3==4)           {              port=port2;              export_flag=1;            }          }           init_socket(port);       if(export_flag==1)        {while(recount3<=3)           {               if(connect(socket_descriptor,(void*)&pin,sizeof(pin))==-1)                 recount3++;               else  break;        }          if(recount3==4)           {		close(socket_descriptor);                printf(": Error connecting socket\n");	        return -1;            }        }     if(export_flag==0)        {while(errorcount4<=3)          {              if(send(socket_descriptor,str,strlen(str),0)==-1)             errorcount4++;              else  break;           }          if(errorcount4==4)           {              port=port2;              export_flag=1;            }          }        init_socket(port);    if(export_flag==1)        {while(recount4<=3)           {              if(send(socket_descriptor,str,strlen(str),0)==-1)               recount4++;               else  break;           }          if(recount4==4)           {		close(socket_descriptor);                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_socket(port);      if(export_flag==1)        {while(recount5<=3)           {               if(recv(socket_descriptor, buf, 8192, 0)==-1)                 recount5++;                else  break;           }         if(recount5==4)           {		close(socket_descriptor);                printf(": Error in receive\n");		return -1;            }        }//check result        close(socket_descriptor);   return 0;}

⌨️ 快捷键说明

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