Click here to Skip to main content
15,887,318 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionOnLButtonDblClk In TabControl Pin
mohit`126-Aug-10 5:33
mohit`126-Aug-10 5:33 
QuestionTabControl Problem in FromView Pin
mohit`126-Aug-10 5:24
mohit`126-Aug-10 5:24 
AnswerRe: TabControl Problem in FromView Pin
tanu misra7-Aug-10 1:02
tanu misra7-Aug-10 1:02 
GeneralRe: TabControl Problem in FromView Pin
mohit`1211-Aug-10 5:11
mohit`1211-Aug-10 5:11 
AnswerRe: TabControl Problem in FromView Pin
tanu misra7-Aug-10 1:05
tanu misra7-Aug-10 1:05 
JokeRe: TabControl Problem in FromView Pin
Iain Clarke, Warrior Programmer8-Aug-10 21:36
Iain Clarke, Warrior Programmer8-Aug-10 21:36 
GeneralRe: TabControl Problem in FromView Pin
mohit`129-Aug-10 4:47
mohit`129-Aug-10 4:47 
QuestionGetQueuedCompletionStatus blocks, though GetLastError which is called after AcceptEx returns ERROR_IO_PENDING [modified] Pin
followait6-Aug-10 4:59
followait6-Aug-10 4:59 
But the client can connect.

some of the test codes

server

void post_io_request_of_accept(SOCKET so_listen, PerIoData * per_io_data)
{
	DWORD bytes_received;	
	BOOL ok = AcceptEx(so_listen,
		per_io_data->so_local,
		per_io_data->buf,
		0,
		sizeof(SOCKADDR_STORAGE)+16,
		sizeof(SOCKADDR_STORAGE)+16,
		&bytes_received,
		per_io_data);
	DWORD err = GetLastError();
	if (ok)
	{
		assert(false);
	}
	else if (err==ERROR_IO_PENDING)
	{
	}
	else
		assert(false);
}


DWORD WINAPI ServingThreadProc(LPVOID pParam)
{
	DWORD bytes_tranfered;
	ULONG_PTR completion_key;
	PerIoData * per_io_data;

	while (true)
	{
		BOOL ok = GetQueuedCompletionStatus(HANDLE(pParam),
			&bytes_tranfered,
			&completion_key,
			(OVERLAPPED**)&per_io_data,
			INFINITE);
		assert(ok);		
		handle_io_completion(per_io_data);
	}
	return 0;
}


client

int main()
{
	WSADATA wsa;
	int res = WSAStartup(MAKEWORD(2,2), &wsa);
	assert(res==0);

	SOCKADDR_IN addr_in;
	addr_in.sin_family = AF_INET;
	addr_in.sin_addr.s_addr = inet_addr("127.0.0.1");
	addr_in.sin_port = htons(5150);
	ZeroMemory(&addr_in.sin_zero, sizeof(addr_in.sin_zero));

	SOCKET s = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);
	assert(s!=INVALID_SOCKET);
	int ok = connect(s, (sockaddr*)&addr_in, sizeof(addr_in));
	assert(ok==0);

	for (int i=0; i<10; ++i)
	{
		char buf[256];
		sprintf_s(buf, sizeof(buf), "message %d", i);
		WSABUF wsa_buf;
		wsa_buf.buf = buf;
		wsa_buf.len = strlen(buf);
		DWORD bytes_sent;
		int res = WSASend(s, &wsa_buf, 1, &bytes_sent, 0, NULL, NULL);
		assert(res==0 && bytes_sent==wsa_buf.len);
		printf_s("sent: %s\n", buf);
		Sleep(1000);
	}

	WSACleanup();

	return 0;
}


If use PostQueuedCompletionStatus, GetQueuedCompletionStatus will be unblocked.
What is the problem?
Thanks.

modified on Friday, August 6, 2010 11:38 AM

AnswerRe: GetQueuedCompletionStatus blocks, though GetLastError which is called after AcceptEx returns ERROR_IO_PENDING Pin
Moak7-Aug-10 7:02
Moak7-Aug-10 7:02 
QuestionQueue Mouse event till process completes. Pin
Member 38346306-Aug-10 3:58
Member 38346306-Aug-10 3:58 
AnswerRe: Queue Mouse event till process completes. Pin
Sauro Viti6-Aug-10 4:27
professionalSauro Viti6-Aug-10 4:27 
AnswerRe: Queue Mouse event till process completes. Pin
Richard MacCutchan6-Aug-10 4:45
mveRichard MacCutchan6-Aug-10 4:45 
GeneralRe: Queue Mouse event till process completes. Pin
Member 383463011-Aug-10 3:59
Member 383463011-Aug-10 3:59 
GeneralRe: Queue Mouse event till process completes. Pin
Richard MacCutchan11-Aug-10 5:13
mveRichard MacCutchan11-Aug-10 5:13 
QuestionConnecting multi-webcam to perform perspective reconstruction Pin
ponyta6-Aug-10 0:25
ponyta6-Aug-10 0:25 
AnswerRe: Connecting multi-webcam to perform perspective reconstruction Pin
Sauro Viti6-Aug-10 0:43
professionalSauro Viti6-Aug-10 0:43 
QuestionRe: Connecting multi-webcam to perform perspective reconstruction Pin
ponyta6-Aug-10 3:19
ponyta6-Aug-10 3:19 
AnswerRe: Connecting multi-webcam to perform perspective reconstruction Pin
Sauro Viti6-Aug-10 3:51
professionalSauro Viti6-Aug-10 3:51 
QuestionFill array Pin
AbhiHcl6-Aug-10 0:02
AbhiHcl6-Aug-10 0:02 
AnswerRe: Fill array Pin
bleedingfingers6-Aug-10 0:12
bleedingfingers6-Aug-10 0:12 
GeneralRe: Fill array Pin
AbhiHcl6-Aug-10 0:23
AbhiHcl6-Aug-10 0:23 
GeneralRe: Fill array Pin
bleedingfingers6-Aug-10 0:25
bleedingfingers6-Aug-10 0:25 
GeneralRe: Fill array Pin
bleedingfingers6-Aug-10 1:44
bleedingfingers6-Aug-10 1:44 
AnswerRe: Fill array Pin
_AnsHUMAN_ 6-Aug-10 0:13
_AnsHUMAN_ 6-Aug-10 0:13 
GeneralRe: Fill array Pin
AbhiHcl6-Aug-10 0:24
AbhiHcl6-Aug-10 0:24 

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.