资源简介
实验四 发送邮件
1、实验目的:
要求学生掌握Socket编程中流套接字的技术,以及邮件的发送
2、实验内容:
i. 要求学生掌握利用Socket进行编程的技术
ii. 不能采用现有的工具,必须自己一步一步,根据协议进行操作
iii. 要求每一次操作,必须点击下一步才能继续
iv. 了解邮件发送格式
v. 必须采用图形界面,可以编辑发送内容
vi. 可选,建立自己的邮件服务器
vii. 发送邮件可以发给自己的邮件服务器,也可以发给已知邮件服务器
viii. 要求可以查看得到发送的邮件
代码片段和文件信息
#include “base64h.h“
#include
#pragma comment(lib “ws2_32“)
#include
using namespace std;
#define SERVER_PORT 8002
int main()
{
char *userName[] = {“yangwan@myself.com““xiaoxiao@myself.com““123@myself.com““yangxiao@myself.com“};
char *userPassword = “yangwan“;
char tempbuff[1024] = {0};
char tempb[128] = {0};
WORD socketVersion;
WSADATA wsaData;
SOCKET listenSocketserverSocket;
struct sockaddr_in clientAddr;
struct sockaddr_in serverAddr;
int return_num = 0;
socketVersion = MAKEWORD(22);
return_num = WSAStartup(socketVersion&wsaData);
if(return_num != 0)
{
cout<<“WSAStartup Failed“< return -1;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion != 2))
{
cout<<“Socket Version is Wrong!“< return -1;
}
cout<<“Init Socket Environment Successfully“< /*****************************************************/
listenSocket = socket(AF_INETSOCK_STREAMIPPROTO_TCP);
if(listenSocket == INVALID_SOCKET)
{
cout<<“Create Listen Socket Failed“< WSACleanup();
return -1;
}else
{
cout<<“Create Listen Socket Successfully“< }
serverAddr.sin_family = AF_INET; //地址家族sin_family一般Tcp/ip地址家族为AF_INET
serverAddr.sin_port = htons(SERVER_PORT);//将端口号转化为网络字节
serverAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//使用INADDR_ANY指定任意地址
return_num = bind(listenSocket(struct sockaddr*)&serverAddrsizeof(serverAddr));
if(return_num == SOCKET_ERROR)
{
cout<<“Bind the Port Errors“< closesocket(listenSocket);
WSACleanup();
}else
{
cout<<“Bind the Port: “< }
while(true)
{
cout<<“Listenning ...................“< return_num = listen(listenSocket10);
if(return_num == SOCKET_ERROR)
{
cout<<“There are some problem in the socket listenning“< cout<<“The informatio of the Listen Error:“< closesocket(listenSocket);
WSACleanup();
return -1;
}else
{
int clientAddrLen = sizeof(clientAddr);
serverSocket = accept(listenSocket(struct sockaddr*)&clientAddr&clientAddrLen);
if(serverSocket == INVALID_SOCKET)
{
cout<<“Create ServerSocket Failed“< int num;
cin>>num;
continue;
}else
{
cout<<“Server has Receive the Client‘s Requests“< cout<<“The IP of the Client: “< //inet_ntoa(char*)将网络地址转换成点分十进制的形式
cout<<“The PORT of the Client: “< //ntohs (network to host short)作用是将一个16位数由网络字节顺序转换为主机字节顺序
strcpy(tempbuff“Welcome to YangWan‘s Mail Server!\r\n“);
send(serverSockettempbuffstrlen(tempbuff)0);
recv(serverSockettempb1280);
cout<<“Client : “< if(strncmp(tempb“EHLO“4) == 0)
{
strcpy(tempb“This is YangWan‘s MailServer\r\n“);
send(serverSockettempbstrlen(tempb)0);
mem
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 860 2016-04-17 18:53 readme.txt
文件 2038 2016-04-16 16:27 MySmtpServer\ba
文件 553068 2016-04-16 17:36 MySmtpServer\Debug\MySmtpServer.exe
文件 811568 2016-04-16 17:36 MySmtpServer\Debug\MySmtpServer.ilk
文件 5525172 2016-04-16 16:27 MySmtpServer\Debug\MySmtpServer.pch
文件 1123328 2016-04-16 17:36 MySmtpServer\Debug\MySmtpServer.pdb
文件 280208 2016-04-16 17:36 MySmtpServer\Debug\smtpserver.obj
文件 197632 2016-04-16 17:43 MySmtpServer\Debug\vc60.idb
文件 143360 2016-04-16 17:36 MySmtpServer\Debug\vc60.pdb
文件 4416 2016-04-16 17:45 MySmtpServer\MySmtpServer.dsp
文件 549 2016-04-16 14:45 MySmtpServer\MySmtpServer.dsw
文件 33792 2016-04-16 17:45 MySmtpServer\MySmtpServer.ncb
文件 49664 2016-04-16 17:45 MySmtpServer\MySmtpServer.opt
文件 258 2016-04-16 17:43 MySmtpServer\MySmtpServer.plg
文件 6584 2016-04-16 17:36 MySmtpServer\smtpserver.cpp
文件 6774 2016-04-16 16:08 StmpMySelf\CMailMessage.cpp
文件 1661 2016-04-16 15:42 StmpMySelf\CMailMessage.h
文件 24101 2016-04-16 16:08 StmpMySelf\Debug\CMailMessage.obj
文件 0 2016-04-16 16:08 StmpMySelf\Debug\CMailMessage.sbr
文件 15191 2016-04-16 15:43 StmpMySelf\Debug\NuaaLogin.obj
文件 0 2016-04-16 15:43 StmpMySelf\Debug\NuaaLogin.sbr
文件 105921 2016-04-16 15:43 StmpMySelf\Debug\StdAfx.obj
文件 1375077 2016-04-16 15:43 StmpMySelf\Debug\StdAfx.sbr
文件 3728384 2016-04-16 16:08 StmpMySelf\Debug\StmpMySelf.bsc
文件 118877 2016-04-16 16:08 StmpMySelf\Debug\StmpMySelf.exe
文件 253640 2016-04-16 16:08 StmpMySelf\Debug\StmpMySelf.ilk
文件 14524 2016-04-16 15:43 StmpMySelf\Debug\StmpMySelf.obj
文件 7010056 2016-04-16 15:43 StmpMySelf\Debug\StmpMySelf.pch
文件 410624 2016-04-16 16:08 StmpMySelf\Debug\StmpMySelf.pdb
文件 3572 2016-04-16 15:43 StmpMySelf\Debug\StmpMySelf.res
............此处省略33个文件信息
- 上一篇:科博达面试题及答案.rar
- 下一篇:libstdc++.so.6.0.21
评论
共有 条评论