我正在尝试用c ++开发一个FTP协议。它接受来自客户端的请求类型(获取或放置),但是,服务器始终在两种情况下都接收put请求,并且不执行任何功能。
这里是比较请求类型的代码:
if(strcmp(argv[3],"get")==0)
smsg.type=REQ_GET; //REQ_TIME;
else if (strcmp(argv[3],"put")==0)
{
smsg.type=REQ_PUT; //REQ_SIZE;
}
else err_sys("Wrong request type\n");
这是将get请求发送到服务器时执行的部分:
if(smsg.type=REQ_GET)
{
cout<<"Iam inside get"<<endl;
cout<<smsg.type<<endl;
//send out GET message
memcpy(smsg.buffer,&req,sizeof(req)); //copy the request to the msg's buffer
smsg.length=sizeof(req);
fprintf(stdout,"Send a GET request to %s\n",argv[1]);
if (msg_send(sock,&smsg) != sizeof(req))
err_sys("Sending req packet error.,exit");
//receive the response
if(msg_recv(sock,&rmsg)!=rmsg.length)
err_sys("recv response error,exit");
//cast it to the response structure
respp=(Resp *)rmsg.buffer;
printf("Response:%s\n\n\n",respp->response);}
当显示“respp-&gt; response”时,它不会返回任何内容,并且文件的大小始终为零。
有没有人知道如何解决这个问题? 任何帮助将受到高度赞赏。
答案 0 :(得分:0)
- if(smsg.type=REQ_GET)
+ if(smsg.type==REQ_GET)
下次尝试在编译时使用-Wall,它可能会遇到这种错误