SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx

上传人:b****5 文档编号:16634637 上传时间:2022-11-25 格式:DOCX 页数:8 大小:226.77KB
下载 相关 举报
SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx_第1页
第1页 / 共8页
SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx_第2页
第2页 / 共8页
SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx_第3页
第3页 / 共8页
SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx_第4页
第4页 / 共8页
SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx

《SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

SMTP邮件服务器实验要求winsocket套接字程序Word文档格式.docx

4)其他差错处理功能。

SMTP程序的基本通信流程示例:

1)邮件客户端与SMTP程序通信

2)SMTP程序与实际的邮件服务器通信

 

p.s.关于Win7不能使用telnet命令的问题,windowsvista和win7默认情况下,不安装telnet命令,需要启用telnet:

控制面板->

程序和功能->

打开或关闭windows功能->

选中“Telnet客户端”,不要选择“Telnet服务器”,以避免你的计算机被他人入侵。

以下是实现邮件单发的程序:

#include<

stdio.h>

stdlib.h>

winsock2.h>

externcharmail_from[4096];

externcharrcpt_to[4096];

externchardata[4096];

voidmain_Client();

voidmain()

{

//加载套接字库

WORDA=MAKEWORD(1,1);

WSADATAB;

interr;

err=WSAStartup(A,&

B);

if(err!

=0){

return;

}

if(LOBYTE(B.wVersion)!

=1||HIBYTE(B.wVersion)!

=1){

WSACleanup();

//释放分配资源

//创建用于监听的套接字

SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_INaddrSrv;

addrSrv.sin_addr.S_un.S_addr=inet_addr("

127.0.0.1"

);

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(25);

//绑定套接字

bind(sockSrv,(SOCKADDR*)&

addrSrv,sizeof(SOCKADDR));

//将套接字设为监听模式,准备接受客户请求

listen(sockSrv,5);

SOCKADDR_INaddrClient;

intlen=sizeof(SOCKADDR);

char*sendBuf[]={

"

220\r\n"

"

250\r\n"

354\r\n"

QUIT\r\n"

};

while

(1)

{

//等待客户请求

SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&

addrClient,&

len);

//新建文件指针*fp,指向文件mail.txt,设置其格式为可读可写

FILE*fp;

fp=fopen("

f:

\\mail.txt"

"

w+"

charrecvBuf[4096]="

"

;

//发送数据

send(sockConn,sendBuf[0],strlen(sendBuf[0]),0);

//接收数据

recv(sockConn,recvBuf,sizeof(recvBuf),0);

//打印接收的数据到文件

fprintf(fp,"

%s\n"

recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[1],strlen(sendBuf[1]),0);

memcpy(mail_from,recvBuf,sizeof(recvBuf));

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[2],strlen(sendBuf[2]),0);

memcpy(rcpt_to,recvBuf,sizeof(recvBuf));

send(sockConn,sendBuf[3],strlen(sendBuf[3]),0);

send(sockConn,sendBuf[4],strlen(sendBuf[4]),0);

memcpy(data,recvBuf,sizeof(recvBuf));

send(sockConn,sendBuf[5],strlen(sendBuf[5]),0);

send(sockConn,sendBuf[6],strlen(sendBuf[6]),0);

//调用发送函数

main_Client();

//关闭套接字

closesocket(sockConn);

//关闭文件指针

fclose(fp);

WSACleanup();

}

charmail_from[4096];

charrcpt_to[4096];

chardata[4096];

voidmain_Client()

SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);

addrClient.sin_family=AF_INET;

addrClient.sin_port=htons(25);

structhostent*host;

host=gethostbyname("

memcpy(&

addrClient.sin_addr.S_un.S_addr,host->

h_addr_list[0],host->

h_length);

//连接套接字

connect(sockClient,(SOCKADDR*)&

addrClient,sizeof(SOCKADDR));

char*SendBuf[]={

HELO\r\n"

AUTHLOGIN\r\n"

bmF4ZWlrYQ==\r\n"

//邮箱名的Base64编码

MDEyMzQ1\r\n"

//密码的Base64编码

DATA\r\n"

\r\n.\r\n"

chararecvBuf[4096]="

memset(arecvBuf,0,sizeof(arecvBuf));

send(sockClient,SendBuf[0],strlen(SendBuf[0]),0);

recv(sockClient,arecvBuf,sizeof(arecvBuf),0);

send(sockClient,SendBuf[1],strlen(SendBuf[1]),0);

send(sockClient,SendBuf[2],strlen(SendBuf[2]),0);

send(sockClient,SendBuf[3],strlen(SendBuf[3]),0);

send(sockClient,mail_from,strlen(mail_from),0);

send(sockClient,rcpt_to,strlen(rcpt_to),0);

send(sockClient,SendBuf[4],strlen(SendBuf[4]),0);

send(sockClient,data,strlen(data),0);

//recv(sockClient,arecvBuf,sizeof(arecvBuf),0);

send(sockClient,SendBuf[5],strlen(SendBuf[5]),0);

closesocket(sockClient);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1