Я только начал изучать программирование сокетов, узнал о winsock и добился определенного прогресса. мой вопрос в основном: я хочу отправлять электронные письма, что мне делать?
пункты, которые следует упомянуть:
- Я узнал об инициализации winsock. SMTP-порт (25). успешное создание и подключение к сокетам. Что мне теперь делать?!!! (Я застрял здесь)
- Мне не нужен готовый к работе код. Я хочу учиться. Таким образом, любые книги, документация, учебные пособия или статьи необходимы.
- Я знаю, что сам C ничего не знает о сети, значит ли это, что мне нужно загрузить какие-то библиотеки? (Я использую VS2010, Windows 7)
Вот ссылки на страницы, которые я прочитал до сих пор:
основное руководство по winsock: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx
Я прочитал первые 14 страниц руководства beej (не могу опубликовать ссылку, новые пользователи могут публиковать не более двух гиперссылок)
Я узнал о типах ( WSADATA
, addrinfo structure
, sockaddr
, SOCKET
) и функциях ( WSAStartup()
, WSACleanup()
, getaddrinfo()
, Shutdown()
, WSAGetLastError()
, socket()
, ...)
и я только начал читать эту статью о SMTP
http://www.faqs.org/rfcs/rfc821.html
вот что я написал до сих пор:
#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#pragma comment(lib, "Ws2_32.lib") // Applications that use Winsock must be linked with the Ws2_32.lib library file.
#define HTTP_PORT "80"
#define SMTP_PORT "25"
#define HOSTNAME_PORT "101"
/*
All ports and web services names ( which are string aliases of the ports
can be found here:
%WINDIR%\system32\drivers\etc\services
*/
int main(void)
{
WSADATA wsdata;
int iresult, retval; //iresult : instant result
SOCKET connect_socket;
struct addrinfo *result, *ptr, hints;
iresult = WSAStartup(MAKEWORD(2, 2), &wsdata);
if(iresult != 0) printf("Initiation of Winsock succeeded.\n");
else
{
printf("WinSock initialization failed..\n");
WSACleanup();
return 0;
}
if(LOBYTE(wsdata.wVersion) == 2 && HIBYTE(wsdata.wVersion) == 2) printf("winsock.dll is found.\n");
else
{
printf("Can not find the required winsock.dll file.\n");
WSACleanup();
return 0;
}
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_UNSPEC; // IPv4 or IPv6
hints.ai_protocol = IPPROTO_TCP; // TCP connection ( full duplex )
hints.ai_socktype = SOCK_STREAM; // Provides sequenced, reliable, two-way, connection-based byte streams
connect_socket = socket(hints.ai_family, hints.ai_socktype, hints.ai_protocol);
if(connect_socket == INVALID_SOCKET)
{
printf("Socket Creation failed..\n");
WSACleanup();
return 0;
}
else printf("Socket Creation Succeeded ..\n");
WSACleanup();
return 1;
}
я сбился с курса?
winsock
в основном является реализацией API сокетов BSD. - person cha0site   schedule 02.02.2012