c/c++语言实现连接pop3服务器

玩命速递 2012-05-03 10:52:49
只要实现连接就可以了,连接成功就显示“连接成功”,用户名或密码错就显示“连接失败”,不需要显示邮箱的邮件总数、大小等详细信息。感激。
...全文
237 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
玩命速递 2012-05-04
  • 打赏
  • 举报
回复
感谢 jmy5945hh 大神,
景语 2012-05-03
  • 打赏
  • 举报
回复
POP3的端口号是110
网易邮箱pop3.163.com的IP是220.181.12.101

用socket连接这个套接字

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>

#define SERVPORT 110
#define MAX 4096

int main(int argc, char *argv[]) {
int sockfd, sendBytes, recvBytes;
char choice;
char buf[MAX];
struct hostent *host;
struct sockaddr_in servSockaddr;

if(argc != 2) {
fprintf(stderr,"usage:./client [hostname]\n");
//exit(1);
}

/*translate the address*/
if((host = gethostbyname(argv[1])) == NULL) {
perror("fail to get host by name\n");
exit(1);
}

/*establish a socket*/
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("fail to establish a socket\n");
exit(1);
}

/*init serverSockaddr*/
servSockaddr.sin_family = AF_INET;
servSockaddr.sin_port = htons(SERVPORT);
servSockaddr.sin_addr = *((struct in_addr *)host -> h_addr);
bzero(&(servSockaddr.sin_zero), 8);

/*connect the server*/
if(connect(sockfd, (struct sockaddr *)&servSockaddr, sizeof(struct sockaddr_in)) == -1) {
perror("fail to connect the socket\n");
exit(1);
}
printf("Success to connect the server!\n");
printf("Welcome to join %s!\n", inet_ntoa(servSockaddr.sin_addr));
}


编译运行
jimmy@MyPet:~/code/ftp/client$ make
gcc -ggdb3 ftpcli.c -o ftpcli

jimmy@MyPet:~/code/ftp/client$ ./ftpcli pop3.163.com
Success to connect the server!
Welcome to join 220.181.12.101!

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧