📄 sock_gethost.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);
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];
sockfd=socket_connect(host,"13");
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 + -