sock_getip.c

来自「Linux大学上机源码学习」· C语言 代码 · 共 59 行

C
59
字号
#include <errno.h>#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <arpa/inet.h>#include <stdlib.h>void init_sockaddr(struct sockaddr_in *name,char *addr,char *serv){     name->sin_family=AF_INET;    name->sin_addr.s_addr=inet_addr(addr);    if (serv==NULL)       name->sin_port=htons(0);    else       name->sin_port=htons(atoi(serv));}int socket_connect(char *hostname,char *serv_port)  {    int sockfd;    struct sockaddr_in sockaddr;    struct hostent *hp;    char *host,myname[104];    /* init the IP and port of server*/    init_sockaddr(&sockaddr,hostname,serv_port);    if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){          printf("socket create error\n");          exit(0);     }          if((connect(sockfd,(struct sockaddr *)&sockaddr,sizeof(sockaddr)))<0){          printf("cann't connect server%s\n",strerror(errno));          exit(0);   }    return(sockfd); }int main(int argc,char **argv)  {     int sockfd,n;    char recvbuff[256],*host;    static char xx[10]="asdfa";    struct sockaddr_in servaddr;    if(argc<2)      host="127.0.0.1";    else       host=argv[1];   sockfd=socket_connect(host,"2003");   write(sockfd,xx,sizeof(xx));   while((n=read(sockfd,recvbuff,256))>0){      recvbuff[n]=0;      printf("receve data is:%s",recvbuff);   }  if(n<0){     printf("read error");     exit(0);  }  return 0;}      

⌨️ 快捷键说明

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