📄 socket_client.c
字号:
#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 *hostname,char *serv){ struct hostent *hp; char *host,myname[255]; if(hostname==NULL){ gethostname(myname,sizeof(myname)); host=myname; printf("your hostname is :%s\n",host); } else host=hostname; /* get host address information */ if((hp=gethostbyname(host))==NULL){ printf("Unknown host:%s\n",host); exit(-1); } /* add the IP and port of server */ bzero(name,sizeof(struct sockaddr)); if(hp->h_addrtype==AF_INET){ name->sin_family=AF_INET; bcopy(hp->h_addr_list[0],&name->sin_addr,hp->h_length); printf("addr=%o,len=%d\n",&name->sin_addr.s_addr,hp->h_length); if (serv==NULL) name->sin_port=htons(0); else name->sin_port=htons(atoi(serv)); } else{ printf("Unknown address type\n"); exit(-1); }}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; struct sockaddr_in servaddr;/* if(argc<2) host=NULL; else host=argv[1];*/ host=NULL; sockfd=socket_connect(host,"2003"); write(sockfd,argv[1],sizeof(argv[1])); while((n=read(sockfd,recvbuff,256))>0){ recvbuff[n]=0; fputs(recvbuff,stdout); } if(n<0){ printf("read error"); exit(0); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -