test.cpp

来自「网络编程:socket & POP3,Client」· C++ 代码 · 共 80 行

CPP
80
字号
#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 + =
减小字号Ctrl + -
显示快捷键?