#include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> ...... #define PORT 6996
main(int argc,char *argv[]) {
int orig_sock, //客户端原来套接字描述符
len; //服务器地址长度
static struct sockaddr_in serv_adr;//服务器的Internet地址
struct hostent host;//主机(服务器)
static char buf[128]; //消息缓冲区
if(argc!=2) { fprintf(stderr,"usage: %s server\n\n",argv[0]); exit(1); } host = gethostbyname(argv[1]); //取得主机信息
if(host == (struct hostent *)NULL) { perror("gethostbyname"); exit(2); } memset(&serv_adr,0,sizeof(serv_adr)); //清除结构
serv_adr.sin_family = AF_INET; //设置地址类型
memcpy(&serv_adr.sin_addr,host->h_addr,host->h_length); //地址
serv_adr.sin_port = htons(PORT); //使用我们的假地址
if((orig_sock = socket(AF_INET,SOCK_STREAM,0)) < 0) { peeror("generate error"); exit(3); }
if(connect(orig_sock, (struct sockaddr *)&serv_adr,sizeof(serv_adr)) < 0) { peeror("connect error"); exit(4); }
do { write(fileno(stdout),">",3); //提示用户
if((len = read(fileno(stdin),buf,128))>0) //得到用户输入
{ write(orig_sock,buf,len); //写到套接字
if((len = read(orig_sock,buf,len))>0) //如果返回
write(fileno(stdout),buf,len); //显示它
} ) while(buf[0] != '.'); close(orig_sock); exit(0); }
|