Click here to Skip to main content
15,900,110 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionShell to Notepad? Pin
Dov Sherman15-Jan-03 12:53
Dov Sherman15-Jan-03 12:53 
AnswerRe: Shell to Notepad? Pin
Joaquín M López Muñoz15-Jan-03 21:18
Joaquín M López Muñoz15-Jan-03 21:18 
GeneralDiagnostic Tools Pin
Anonymous15-Jan-03 12:10
Anonymous15-Jan-03 12:10 
GeneralRe: Diagnostic Tools Pin
Christian Graus15-Jan-03 15:51
protectorChristian Graus15-Jan-03 15:51 
GeneralHide mouse pointer Pin
paulb15-Jan-03 11:56
paulb15-Jan-03 11:56 
GeneralRe: Hide mouse pointer Pin
Christian Graus15-Jan-03 12:11
protectorChristian Graus15-Jan-03 12:11 
GeneralAFX_MODULE_THREAD_STATE Pin
Karl Lean15-Jan-03 11:50
Karl Lean15-Jan-03 11:50 
GeneralCSocket Second Receive not responding Pin
Glenn E. Lanier II15-Jan-03 11:10
Glenn E. Lanier II15-Jan-03 11:10 
I am trying to create a very simple C++ POP3 client. I have the following code (minimilized for ease of reading) that will allow me to connect to a POP3 server, receive the Welcome, and send the user name. Trying to receive the response to the user name seems to "freeze" -- CPU usage stays low (<10%), but nothing seems to be happening. Any thoughts/suggestions/criticisms/praise?

	<br />
	CString sPOP3ServerIP = "valid.ip.address";<br />
	CString m_sUsername = "ValidUser";<br />
	CString m_sPassword = "ValidPassword";<br />
<br />
	CSocket m_socket;<br />
	// Create socket.<br />
	m_socket.Close();<br />
	if ((INVALID_SOCKET == m_socket.m_hSocket) || (NULL == m_socket.m_hSocket))<br />
	{<br />
		// No socket, or invalid socket.<br />
		if (!m_socket.Create())<br />
		{<br />
			TRACE("Unable to create socket. Error code: %i\n", GetLastError());<br />
			return;<br />
		}<br />
	}<br />
<br />
	// Connect to POP server<br />
	if (!m_socket.Connect(sPOP3ServerIP, 110))<br />
	{<br />
		TRACE("Unable to connect to %s. Error code: %i", sPOP3ServerIP, GetLastError());<br />
		return;<br />
	}<br />
<br />
	// Get Response to connect. Should be +OK or -ERR<br />
	TCHAR buff[4096];<br />
	memset(buff, 0, 4096);<br />
	int nRead;<br />
	nRead = m_socket.Receive(buff, 4096); <br />
	buff[nRead] = 0;				// Null terminate<br />
	CString sTempMessage(buff);		<br />
	TRACE("Connected. Message received [%s]\n", sTempMessage);<br />
<br />
	CString sMessageSend = "";<br />
	int iLength = 0;<br />
	if ("+OK" == sTempMessage.Left(3))<br />
	{<br />
		// Connection good, send username<br />
		sMessageSend.Format("USER %s", m_sUsername);<br />
		iLength = m_socket.Send(&sMessageSend, sMessageSend.GetLength());<br />
		if (SOCKET_ERROR == iLength)<br />
		{<br />
			TRACE("Error %i on send USER NAME\n",GetLastError());<br />
			return;<br />
		}<br />
		// Get Response to USER. Should be +OK or -ERR<br />
		memset(buff, 0, 4096);<br />
/* ------------------------------------------------------- */<br />
		// This is the receive that just "freezes"<br />
		nRead = m_socket.Receive(buff, 4096); <br />
/* ------------------------------------------------------- */<br />
		buff[nRead] = 0;				// Null terminate<br />
		CString sTempMessage(buff);		<br />
		TRACE("USER Sent. Message received [%s]\n", sTempMessage);<br />
<br />
<br />
		// Send password.<br />
		sMessageSend.Format("PASS %s", m_sPassword);<br />
		iLength = m_socket.Send(&sMessageSend, sMessageSend.GetLength());<br />
		if (SOCKET_ERROR == iLength)<br />
		{<br />
			TRACE("Error %i on send PASS Word\n",GetLastError());<br />
			return;<br />
		}<br />
		// Get Response to PASS. Should be +OK or -ERR<br />
		memset(buff,0,4096);<br />
		nRead = m_socket.Receive(buff, 4096); <br />
		buff[nRead] = 0;				// Null terminate<br />
		CString sTempMessage1(buff);		<br />
		TRACE("PASS Sent. Message received [%s]\n", sTempMessage1);<br />
	}<br />
<br />
	sMessageSend.Format("QUIT");<br />
	iLength = m_socket.Send(&sMessageSend, sMessageSend.GetLength());<br />
	if (SOCKET_ERROR == iLength)<br />
	{<br />
		TRACE("Error %i on send QUIT\n",GetLastError());<br />
		return;<br />
	}<br />
	// Get Response to PASS. Should be +OK or -ERR<br />
	memset(buff,0,4096);<br />
	nRead = m_socket.Receive(buff, 4096); <br />
	buff[nRead] = 0;				// Null terminate<br />
	CString sTempMessage1(buff);		<br />
	TRACE("QUIT Sent. Message received [%s]\n", sTempMessage1);<br />
<br />
	m_socket.Close();<br />
	return;<br />


Thanks for any advice.
GeneralRe: CSocket Second Receive not responding Pin
User 665815-Jan-03 11:29
User 665815-Jan-03 11:29 
GeneralRe: CSocket Second Receive not responding Pin
Gavin Taylor15-Jan-03 12:52
professionalGavin Taylor15-Jan-03 12:52 
GeneralRound Pin
Sunnygirl15-Jan-03 11:01
Sunnygirl15-Jan-03 11:01 
Generalprocess performance question Pin
Hugh Beaumont15-Jan-03 10:45
Hugh Beaumont15-Jan-03 10:45 
GeneralRe: process performance question Pin
Dave Bryant15-Jan-03 11:18
Dave Bryant15-Jan-03 11:18 
GeneralBasic question on CScrollView Pin
Still learning how to code15-Jan-03 10:21
Still learning how to code15-Jan-03 10:21 
GeneralBitmap and dialogbar Pin
MemLeak15-Jan-03 9:23
MemLeak15-Jan-03 9:23 
GeneralRe: Bitmap and dialogbar Pin
Hesham Amin15-Jan-03 11:35
Hesham Amin15-Jan-03 11:35 
GeneralDetecting Large Fonts - Display Properties Pin
JohnnyG15-Jan-03 9:06
JohnnyG15-Jan-03 9:06 
GeneralRe: Detecting Large Fonts - Display Properties Pin
Chris Richardson15-Jan-03 9:44
Chris Richardson15-Jan-03 9:44 
GeneralRe: Detecting Large Fonts - Display Properties Pin
JohnnyG18-Jan-03 5:48
JohnnyG18-Jan-03 5:48 
GeneralReceiving calls in TAPI Pin
vin15-Jan-03 8:45
vin15-Jan-03 8:45 
GeneralRe: Receiving calls in TAPI Pin
Nick Parker15-Jan-03 8:56
protectorNick Parker15-Jan-03 8:56 
GeneralRe: Receiving calls in TAPI Pin
David Salter15-Jan-03 9:10
David Salter15-Jan-03 9:10 
GeneralRe: Receiving calls in TAPI Pin
vin16-Jan-03 0:17
vin16-Jan-03 0:17 
GeneralSingle Document many views Pin
ns15-Jan-03 8:38
ns15-Jan-03 8:38 
GeneralRe: Single Document many views Pin
valikac15-Jan-03 9:07
valikac15-Jan-03 9:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.