|
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUF_SIZE 1024
using namespace std;
int send_msg(int sfd, const char*msg)
{
return write(sfd, msg, strlen(msg));
}
int get_msg(int sfd, string**ppstr, bool oneline = false)
{
int len, tmplen, i = 0;
char buf[BUF_SIZE];
while(tmplen = read(sfd, buf, BUF_SIZE))
{
buf[tmplen] = 0;
len += tmplen;
(*ppstr)->append(buf);
if(oneline) break;
}
return len;
}
int main(int argc, char **argv)
{
int sfd, res;
sfd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == sfd)
{
cout<<"创建socket出错!"<<endl;
exit(1);
}
cout<<"socket创建成功!"<<endl;
struct sockaddr_in sin;
memset(&sin, 0, sizeof(sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_port = htons(21);
sin.sin_addr.s_addr = inet_addr("61.164.115.208");
res = connect(sfd, (sockaddr*)&sin, sizeof(sockaddr_in));
if(-1 == res)
{
cout<<"连接服务器出错!"<<endl;
exit(2);
}
cout<<"连接服务器成功!"<<endl;
res = send_msg(sfd, "");
if(-1 == res)
{
cout<<"发送消息''时发生错误!"<<endl;
exit(3);
}
string *str = new string;
get_msg(sfd, &str, true);
if("220" != str->substr(0, 3))
{
exit(4);
}
cout<<str->data()<<endl;
res = send_msg(sfd, "USER wed577\r\n");
if(-1 == res)
{
cout<<"发送消息'USER wed577'时发生错误!\r\n"<<endl;
exit(5);
}
str->resize(0);
get_msg(sfd, &str, true);
if("331" != str->substr(0, 3))
{
exit(6);
}
cout<<str->data()<<endl;
res = send_msg(sfd, "PASS 703804wed577\r\n");
if(-1 == res)
{
cout<<"发送消息'PASS 703804wed577\r\n'时发生错误!"<<endl;
exit(7);
}
str->resize(0);
get_msg(sfd, &str, true);
if("230" != str->substr(0, 3))
{
exit(8);
}
cout<<str->data()<<endl;
res = send_msg(sfd, "QUIT\r\n");
str->resize(0);
get_msg(sfd, &str, true);
cout<<str->data()<<endl;
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|