使用socket編寫pop3客戶端_第1頁
使用socket編寫pop3客戶端_第2頁
使用socket編寫pop3客戶端_第3頁
使用socket編寫pop3客戶端_第4頁
使用socket編寫pop3客戶端_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、項(xiàng)目分析設(shè)計(jì)文檔使用socket編寫pop3客戶端課程名稱基礎(chǔ)實(shí)踐專 業(yè)計(jì)科班 級學(xué) 號(hào)姓 名11111撰寫時(shí)間: 2015 年 9 月 9 日【項(xiàng)目構(gòu)思】使用socket編寫pop3客戶端【項(xiàng)目設(shè)計(jì)】#include #include#include#include#pragma comment(lib,ws2_32.lib)#define MAX_SIZE 128 /定義可以接收的最大字符串長度main(int argc, char *argv)/變量聲明WSADATA wsaData;int sock;char hostName128; /服務(wù)器IPstruct hostent* pHo

2、st; struct sockaddr_in servAddr; /服務(wù)器端地址int byteRcvd; /recv函數(shù)接收到的字節(jié)數(shù)char respondFromServerMAX_SIZE; char resStringMAX_SIZE; char commandMAX_SIZE;char mailBufMAX_SIZE;int i;/加載Winsock DLLif(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf(初始化winsock失敗n);exit(0);/建立Socketsock=socket(PF_INET,SOCK_STREAM,IP

3、PROTO_TCP);if(sock=INVALID_SOCKET)printf(創(chuàng)建socket失敗n);WSACleanup();exit(0);/從控制臺(tái)輸入服務(wù)器端的域名地址 printf(請輸入pop3服務(wù)器的域名地址:n);scanf(%s,hostName); pHost=gethostbyname(hostName);/構(gòu)造服務(wù)器端的地址結(jié)構(gòu),用于與服務(wù)器的連接memset(&servAddr,0,sizeof(servAddr);/結(jié)構(gòu)體清零servAddr.sin_family=AF_INET;/servAddr.sin_addr.s_addr = inet_addr(ho

4、stIP);servAddr.sin_addr.s_addr = (*(struct in_addr*)pHost-h_addr).s_addr;servAddr.sin_port=htons(110); /連接服務(wù)器if(connect(sock,(struct sockaddr *)&servAddr,sizeof(servAddr)=SOCKET_ERROR )printf(連接建立失敗n);closesocket(sock);WSACleanup();exit(0);/接收服務(wù)器響應(yīng)byteRcvd = recv(sock,respondFromServer,MAX_SIZE,0);i

5、f(byteRcvd = SOCKET_ERROR) printf(連接響應(yīng)失敗n);closesocket(sock);WSACleanup();exit(0);elseif(memcmp(respondFromServer,-ERR,4)=0)printf(連接錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseprintf(服務(wù)器響應(yīng):); for(i=0;ibyteRcvd;i+)printf(%c,respondFromServeri);printf(n);/驗(yàn)證用戶名memset(resString, 0, sizeof(resStrin

6、g);/信息清空 memset(command,0,MAX_SIZE);printf(請輸入用戶名:n);scanf(%s,resString); memcpy(command,USER ,strlen(USER ); memcpy(command+strlen(USER ),resString,strlen(resString); memcpy(command+strlen(USER )+strlen(resString),rn,2);send(sock,command,strlen(command),0);byteRcvd = recv(sock,respondFromServer,MAX

7、_SIZE,0);if(byteRcvd = SOCKET_ERROR) printf(socket錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseif(memcmp(respondFromServer,-ERR,4)=0)printf(用戶名錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseprintf(服務(wù)器響應(yīng):);for(i=0;ibyteRcvd;i+)printf(%c,respondFromServeri);printf(n);/驗(yàn)證密碼memset(resString, 0, size

8、of(resString);/信息清空 memset(command,0,MAX_SIZE);printf(請輸入密碼:n);i=0;while(resStringi=getch() if(resStringi=13) printf(n); break; if(resStringi!=b) printf(*); i+; else printf(b b); i-; resStringi=0; memcpy(command,PASS ,strlen(PASS ); memcpy(command+strlen(PASS ),resString,strlen(resString); memcpy(co

9、mmand+strlen(PASS )+strlen(resString),rn,2);send(sock,command,strlen(command),0);byteRcvd = recv(sock,respondFromServer,MAX_SIZE,0);if(byteRcvd = SOCKET_ERROR) printf(socket錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseif(memcmp(respondFromServer,-ERR,4)=0)printf(密碼錯(cuò)誤n);closesocket(sock);WSACleanu

10、p();exit(0);elseprintf(服務(wù)器響應(yīng):);for(i=0;ibyteRcvd;i+)printf(%c,respondFromServeri);printf(n); /顯示郵件數(shù)目memset(resString, 0, sizeof(resString);/信息清空 memset(command,0,MAX_SIZE);memcpy(command,STAT ,strlen(STAT);memcpy(command+strlen(STAT),rn,2);printf(%s,command);send(sock,command,strlen(command),0);byte

11、Rcvd = recv(sock,respondFromServer,MAX_SIZE,0);if(byteRcvd = SOCKET_ERROR) printf(socket錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseif(memcmp(respondFromServer,-ERR,4)=0)printf(應(yīng)答錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseprintf(服務(wù)器響應(yīng):);for(i=0;ibyteRcvd;i+)printf(%c,respondFromServeri);pri

12、ntf(n);/返回指定郵件的內(nèi)容/*memset(resString, 0, sizeof(resString);/信息清空 memset(command,0,MAX_SIZE);memcpy(command,RETR ,strlen(RETR );memcpy(command+strlen(RETR ),4rn,3);printf(%s,command);send(sock,command,strlen(command),0);byteRcvd = recv(sock,respondFromServer,MAX_SIZE,0);if(byteRcvd = SOCKET_ERROR) printf(socket錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseif(memcmp(respondFromServer,-ERR,4)=0)printf(應(yīng)答錯(cuò)誤n);closesocket(sock);WSACleanup();exit(0);elseprintf(服務(wù)器響應(yīng):);for(i=0;ibyteRcvd;i+)printf(%c,respondFromServeri);printf(n);while(1)memset(mailBuf,0,MAX_SIZE);byteRcvd = recv(sock,mailBuf,MAX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論