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

📄 sendto.c

📁 linux下的人机对话编程
💻 C
字号:
#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(char * host_name_s,char *str,int size) {	int port1=8090;	int port2=8095;	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)               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("success!\n");            printf("Response form server:%s\n",buf);      close(socket_descriptor);  return 0;   }

⌨️ 快捷键说明

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