⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 网络编程:socket & POP3,Client
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")

#define POP3SERVPORT 110 
#define MAXDATASIZE 4096 

void main()
{
	WORD wVersionRequested;
	WSADATA WSAData;
	
	wVersionRequested = MAKEWORD(1, 1);
	
	if (0 != WSAStartup(wVersionRequested, &WSAData))
	{
		printf("加载套接字错误!");
		exit(1);
	}
	
	int sockfd; 
	struct hostent *host; 
	struct sockaddr_in serv_addr; 
	char *POPMessage[]={ 
		"USER userid\r\n", 
			"PASS password\r\n", 
			"STAT\r\n", 
			"LIST\r\n", 
			"RETR 1\r\n", 
			"DELE 1\r\n", 
			"QUIT\r\n", 
			NULL 
	}; 
	int iLength; 
	int iMsg=0; 
	int iEnd=0; 
	char buf[MAXDATASIZE] = {0};
	
	if ((host  =gethostbyname("172.18.2.145")) == NULL)
	{
		printf("获取主机域名错误!");
		WSACleanup();
		exit(1);
	}
	
	if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
	{
		printf("创建套接字错误!");
		WSACleanup();
		exit(1);
	}
	
	serv_addr.sin_family = AF_INET;
	serv_addr.sin_port = htons(POP3SERVPORT);
	serv_addr.sin_addr = *((struct in_addr*)host->h_addr);
	
	if (SOCKET_ERROR == connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(struct sockaddr)))
	{
		printf("连接套接字错误!");
		closesocket(sockfd);
		WSACleanup();
		exit(1);
	}
	
	do 
	{
		send(sockfd, POPMessage[iMsg], strlen(POPMessage[iMsg]), 0);
		printf("sent: %s",POPMessage[iMsg]); 
		iLength = recv(sockfd, buf + iEnd, sizeof(buf) - iEnd, 0);
		iEnd += iLength;
		buf[iEnd] = '\0';
		printf("received: %s,%d\n",buf,iMsg);
		iMsg++;
	} while (POPMessage[iMsg]);

	closesocket(sockfd);
	WSACleanup();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -