📄 tclient.ec
字号:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdarg.h>
#include<string.h>
#include<errno.h>
#include<netdb.h>
#include<fcntl.h>
#include<sys/time.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include"skel.h"
static void set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol);
void error(int status,int err,char *fmt,...);
static void client(SOCKET s,struct sockaddr_in *peerp);
char *program_name;
int main(int argc,char **argv)
{
struct sockaddr_in peer;
SOCKET s;
INIT();
set_address(argv[1],argv[2],&peer,"tcp");
s=socket(AF_INET,SOCK_STREAM,0);
if(!isvalidsock(s))
error(1,errno,"socket call failed");
if(connect(s,(struct sockaddr *)&peer,sizeof(peer)))
error(1,errno,"connect failed");
client(s,&peer);
EXIT(0);
}
/*****************************************************/
static void client(SOCKET s,struct sockaddr_in *peerp)
{
int rc;
char buf[120];
for(;;)
{
rc=recv(s,buf,sizeof(buf),0);
if(rc<=0)
break;
write(1,buf,rc);
}
}
/*****************************************************************/
static void set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol)
{
struct servent *sp;
struct hostent *hp;
char *endptr;
short port;
bzero(sap,sizeof(*sap));
sap->sin_family=AF_INET;
if(hname!=NULL)
{
if(!inet_aton(hname,&sap->sin_addr))
{
hp=gethostbyname(hname);
if(hp==NULL)
error(1,0,"unknown host:%s\n",hname);
sap->sin_addr=*(struct in_addr *)hp->h_addr;
}
}
else
sap->sin_addr.s_addr=htonl(INADDR_ANY);
port=strtol(sname,&endptr,0);
if(*endptr=='\0')
sap->sin_port=htons(port);
else
{
sp=getservbyname(sname,protocol);
if(sp==NULL)
error(1,0,"unknow service:%s\n",sname);
sap->sin_port=sp->s_port;
}
}
/*****************************************************************/
void error(int status,int err,char *fmt,...)
{
va_list ap;
va_start(ap,fmt);
fprintf(stderr,"%s:",program_name);
vfprintf(stderr,fmt,ap);
va_end(ap);
if(err)
fprintf(stderr,": %s (%d) \n",strerror(err),err);
if(status)
EXIT(status);
}
/*****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -