em xin lỗi
thực sự em đang bắt đầu học winsock OS windows nên có quá nhiều câu hỏi vẫn không biết nên hỏi thế nào cho rõ hơn. có gì các pro lượng thứ và cứ thẳng thắn đập vào mặt em để em biết.
cảm ơn anh Hoang về demo. em chưa hiểu rõ lắm nhưng có thể đoán là phải dùng giao thức POP3 để load mail từ server về cái app mail client của mình
tiện thể cho em hỏi về đoạn code này. tại sao tham số của function select() lại là hSocket+1 ??? (hSocket là SOCKET)
Mã nguồn PHP:
void CSmtp::SendData(Command_Entry* pEntry){ if(m_ssl != NULL) { SendData_SSL(m_ssl, pEntry); return; } int idx = 0,res,nLeft = strlen(SendBuf); fd_set fdwrite; timeval time; time.tv_sec = pEntry->send_timeout; time.tv_usec = 0; assert(SendBuf); if(SendBuf == NULL) throw ECSmtp(ECSmtp::SENDBUF_IS_EMPTY); while(nLeft > 0) { FD_ZERO(&fdwrite); FD_SET(hSocket,&fdwrite); if((res = select(hSocket+1,NULL,&fdwrite,NULL,&time)) == SOCKET_ERROR) { FD_CLR(hSocket,&fdwrite); throw ECSmtp(ECSmtp::WSA_SELECT); } if(!res) { //timeout FD_CLR(hSocket,&fdwrite); throw ECSmtp(ECSmtp::SERVER_NOT_RESPONDING); } if(res && FD_ISSET(hSocket,&fdwrite)) { res = send(hSocket,&SendBuf[idx],nLeft,0); if(res == SOCKET_ERROR || res == 0) { FD_CLR(hSocket,&fdwrite); throw ECSmtp(ECSmtp::WSA_SEND); } nLeft -= res; idx += res; } } OutputDebugStringA(SendBuf); FD_CLR(hSocket,&fdwrite);}
theo em hiểu thì select() làm việc trong coi cái socket xem lúc nào có thể send() or recv(). vậy thì tham số nên để là hSocket thôi chứ sao lại +1 làm gì ?
tiện thể cho em hỏi luôn:
- SMTP và POP là 2 giao thức dùng để send / load mail ?
- SSL/TLS là 2 chuẩn do ai đó đặt ra và thư viện của nó không sẵn có trong thư viện của C++ ? (nếu có thì thư viện đó là gì?)
em đọc tài liệu tiếng anh nên cái này hơi ú ớ chưa dám chắc. các pro biết thì chỉ giáo cho em.
Ngoại trừ một số ít trường hợp rãnh mũi - má và “râu rồng silicon” xuất hiện sớm, có khi từ tuổi thanh niên do cơ địa, còn lại, đại đa số do căn do lão hoá đã gây nên ba diễn biến: Giảm mô xương gò...
Cách thẩm mỹ má ở tuổi trung niên...