[問題] TCP/IP 非同步模型
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual Stdio 6
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
WS2_32.lib
問題(Question):
最近在研習TCP/IP 的通訊協定
主要在學UDP
目前最基本的程式照著參考書就寫得出來
可是一碰到阻攔式 非阻攔式 非同步式 (主要需要的是非同步式的)
但只要一碰到
就會提到視窗化的程式碼
像是DialogBox.....
不知道可以怎麼避掉
暫時不想碰視窗化的程式 但是一碰到就卡關
BOOL CALLBACK DialogProc(HWND hDlg, UINT MSG, WPARAM wParam, LPARAM lParam)
{
switch(MSG)
{
case WM_INITDIALOG:
{
WSAAsyncSelect(sock, hDlg, WM_SOCKETREAD, FD_READ);
}break;
case WM_COMMAND:
{
switch(wParam)
{
case IDC_OK:
case IDC_CANCEL: EndDialog(hDlg, 0); break;
}
}break;
case WM_SOCKETREAD:
{
SOCKADDR from;
char buffer[256];
int len = sizeof(SOCKADDR);
memset(buffer, '\0', 256);
recvfrom(sock, buffer, sizeof(buffer)-1, 0, &from, &len);
SetDlgItemText(hDlg, IDC_MESSAGE, buffer);
}break;
}
return(0);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nShowCmd)
{
WSADATA data;
if (WSAStartup(MAKEWORD(2,2), &data) != 0) return(0);
int ret;
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (!sock)
{
WSACleanup();
return(0);
}
saServer.sin_family = AF_INET;
saServer.sin_addr.s_addr = INADDR_ANY;
saServer.sin_port = htons(APP_PORT);
ret = bind(sock, (SOCKADDR *)&saServer, sizeof(SOCKADDR));
if (ret)
{
WSACleanup();
return(false);
}
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
closesocket(sock);
WSACleanup();
return(1);
}
這些地方可不可以用其他的方式來寫
真的很頭痛
感謝前輩們指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.119.192
→
09/06 23:24, , 1F
09/06 23:24, 1F
→
09/06 23:27, , 2F
09/06 23:27, 2F
→
09/06 23:38, , 3F
09/06 23:38, 3F
→
09/06 23:41, , 4F
09/06 23:41, 4F
→
09/06 23:43, , 5F
09/06 23:43, 5F
推
09/06 23:50, , 6F
09/06 23:50, 6F
→
09/06 23:51, , 7F
09/06 23:51, 7F
推
09/06 23:52, , 8F
09/06 23:52, 8F
→
09/06 23:52, , 9F
09/06 23:52, 9F
→
09/06 23:52, , 10F
09/06 23:52, 10F
→
09/06 23:53, , 11F
09/06 23:53, 11F
→
09/06 23:55, , 12F
09/06 23:55, 12F
→
09/06 23:55, , 13F
09/06 23:55, 13F
→
09/06 23:57, , 14F
09/06 23:57, 14F
推
09/07 00:11, , 15F
09/07 00:11, 15F