?? client.c
字號:
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <fcntl.h>#include <sys/time.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <unistd.h>#include <time.h>#include <resolv.h>#define SERVPORT 3333#define MAXDATASIZE 80int main(int argc,char *argv[]){ int sockfd,sendbytes,recvbytes; int maxfd; int ffd; int ret; int i; char buf[MAXDATASIZE]; char recvbuf[MAXDATASIZE]; struct timeval tv; struct hostent *host; struct sockaddr_in serv_addr; fd_set rfds; if(argc < 2) { fprintf(stderr,"Please enter the server's hostname!\n"); exit(1); } if((host=gethostbyname(argv[1]))==NULL) { perror("gethostbyname"); exit(1); } if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { perror("socket"); exit(1); } serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(SERVPORT); serv_addr.sin_addr=*((struct in_addr *)host->h_addr); bzero(&(serv_addr.sin_zero),8); if(connect(sockfd,(struct sockaddr *)&serv_addr,\ sizeof(struct sockaddr))==-1) { perror("connect"); exit(1); } while(1) { FD_ZERO(&rfds); FD_SET(0,&rfds); maxfd=0; FD_SET(sockfd,&rfds); if(maxfd<sockfd) { maxfd=sockfd; } tv.tv_sec=1; tv.tv_usec=0; ret=select(maxfd+1,&rfds,NULL,NULL,&tv); if (ret==-1) { perror("select error:\n"); exit(1); } else if (ret==0) { continue; } else { if (FD_ISSET(0,&rfds)) { fgets(buf,10,stdin); sendbytes=send(sockfd,buf,sizeof(buf),0); if(sendbytes==-1) { perror("send error"); exit(1); } for(i=strlen(buf);i>=0;i--) { buf[i+2]=buf[i]; } buf[0]='.'; buf[1]='/'; //break; } if(FD_ISSET(sockfd,&rfds)) { recvbytes=recv(sockfd,recvbuf,MAXDATASIZE,0); if(recvbytes==-1) { perror("recv file"); exit(1); } ffd=open("./newfile",O_WRONLY|O_CREAT,0600); if(ffd==-1) { printf("create file error\n"); exit(1); } write(ffd,recvbuf,MAXDATASIZE); memset(recvbuf,0,sizeof(recvbuf)); break; } } } close(sockfd); return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -