का उपयोग कर ईमेल भेजना मैंने अभी सॉकेट प्रोग्रामिंग के बारे में सीखना शुरू कर दिया है और जीत के बारे में सीखा है और कुछ प्रगति हासिल की है। मेरा सवाल मूल रूप से है: मैं ईमेल भेजना चाहता हूं, मुझे क्या करना चाहिए?सी
अंक उल्लेख किया जाना:
- मैं विनसॉक आरंभ के बारे में सीखा। एसएमटीपी पोर्ट (25)। सॉकेट को सफलतापूर्वक बनाना और कनेक्ट करना। अब मुझे क्या करना चाहिए?!!! (मैं यहां फंस गया हूं)
- मैं एक काम के लिए तैयार कोड नहीं चाहता। मैं सीखना चाहता हूँ। इसलिए, किसी भी किताबें, दस्तावेज, ट्यूटोरियल या लेख सिफारिशों की आवश्यकता है।
- मुझे पता है कि सी स्वयं नेटवर्किंग के बारे में कुछ नहीं जानता है, इसका मतलब है कि मुझे कुछ पुस्तकालयों को डाउनलोड करना है? (मैं VS2010 उपयोग कर रहा हूँ, विंडोज 7)
यहाँ मैं अब तक पढ़ा है पृष्ठों के लिंक हैं:
बुनियादी विनसॉक गाइड: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs.85).aspx
मैं बीज गाइड से पहले 14 पृष्ठों पढ़ा है (लिंक पोस्ट नहीं कर सकते, नए उपयोगकर्ताओं को केवल दो हाइपरलिंक की एक अधिकतम पोस्ट कर सकते हैं)
मैं प्रकार (WSADATA
, addrinfo structure
, sockaddr
, SOCKET
) और कार्य (WSAStartup()
,के बारे में सीखा है, 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;
}
बजे मैं अनिच्छित कार्य होना?
मैं था पढ़ने स्टीवंस के उत्कृष्ट "टीसीपी/आईपी इलस्ट्रेटेड" पुस्तक की सलाह देते हैं, और यह भी उसकी "उन्नत यूनिक्स पर्यावरण में प्रोग्रामिंग "। हां, मुझे पता है कि यह यूनिक्स कहता है, लेकिन यह वास्तव में एक उत्कृष्ट पुस्तक है और 'विंसॉक' मूल रूप से बीएसडी सॉकेट एपीआई का कार्यान्वयन है। – cha0site