📄 2c.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <netinet/in.h>
#define DEST_IP "192.168.0.2"
#define DEST_PORT 3001 //*欲连接服务器端口*/
#define MAXDATASIZE 128
int main(int argc,char * argv[])
{
int sockfd;
int numbytes;
char filename[20];
FILE *fp;
int connflag;
int flag=1; //*连接状态标志*/
char buf[MAXDATASIZE];
char par[20]; /*参数*/
struct sockaddr_in serv_addr;
struct hostent *he;
struct sockaddr_in their_addr;
if(argc !=2)
{
printf("Error: client hostname\n");
exit(1);
}
if((he=gethostbyname(argv[1]))==NULL){
printf("Gethostbyname error!\n");
exit(1);
}
sockfd=socket(AF_INET,SOCK_STREAM,0); //*建立流式socket*/
if(sockfd==-1) //*socket调用错误处理*/
{
printf("SOCKET ERROR!!\n");
exit(1);
}
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(DEST_PORT);
serv_addr.sin_addr=*((struct in_addr *)he->h_addr);
bzero(&(serv_addr.sin_zero),8);
connflag=connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr));
if(connflag==-1) //*connect调用错误处理*/
{
printf("CONNECT ERROR!!\n");
exit(1);
}
//******************************/
while(1){
recv(sockfd,buf,MAXDATASIZE,0);
if(strncmp(buf,"connect stop!",13)==0)
end_sock(sockfd,buf,filename);
printf("%s",buf);
scanf("%s,",&buf);
send(sockfd,buf,MAXDATASIZE,0);
if(strcmp(buf,"put")==0)
{
tran_file(sockfd,buf);
}
if(strcmp(buf,"query")==0)
{
f_query(sockfd,buf);
}
if(strcmp(buf,"result")==0)
{
f_result(sockfd,buf);
}
if(strcmp(buf,"ls")==0)
{
ls(sockfd,buf);
}
//sleep(0.2);
}
/**********USERNAME&PASSWORD*******/
printf("lalalala\n");
close(sockfd);
}
//****************连接结束******************/
end_sock(int sockfd)
{
printf("connect stop!\n");
close(sockfd);
exit(0);
return 0;
}
/****************传送文件******************/
tran_file(int sockfd,char * buf)
{
FILE * fp;
char filename[20];
printf("File name is:");
scanf("%s",&filename);
printf("%s\n",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
send(sockfd,"!error!",8,0);
printf("Wrong file name!\n");
return 0;
}
send(sockfd,filename,20,0);
int size;
printf("Now ransproting...\n");
recv(sockfd,buf,MAXDATASIZE,0);
if(strcmp(buf,"transport ready")!=0)
{
printf("Server: transport error!\n");
fclose(fp);
return 0;
}
while(!feof(fp))
{
fread(buf,MAXDATASIZE,1,fp);
send(sockfd,buf,MAXDATASIZE,0);
}
send(sockfd,"!file! !end!",13,0);
printf("File transprot OK\n");
fclose(fp);
}
/***********ls***************/
ls(int sockfd,char *buf)
{
printf ("%s",buf);
strcpy(buf,"");
printf ("%s",buf);
recv(sockfd,buf,MAXDATASIZE,0);
if(strncmp(buf,"can't ls your file",18)==0)
{
printf("Server: %s\n",buf);
return 0;
}
printf("%s",buf);
while(!EOF)
{
read(sockfd,buf,MAXDATASIZE);
printf("%s",buf);
}
}
/****************query********************/
f_query(int sockfd ,char *buf)
{
printf("In quering...\n");
read(sockfd,buf,MAXDATASIZE);
printf("Server: %s",buf);
}
/****************result********************/
f_result(int sockfd ,char *buf)
{
read(sockfd,buf,MAXDATASIZE);
printf("Server: %s",buf);
read(sockfd,buf,MAXDATASIZE);
while((strcmp(buf,"!All !have! !sended!"))!=0)
{
printf("%s",buf);
read(sockfd,buf,MAXDATASIZE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -