⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3-4.html

📁 介绍各种平台进行SOCKET编程的好东东。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<P ALIGN="JUSTIFY">&#9;    CheckThisProtoBoxOn(hDlg, IDS_UDP);</P>
<P ALIGN="JUSTIFY">&#9;</P>
<P ALIGN="JUSTIFY">&#9;if (!blocking_option)&#9;&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>阻塞模式</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisBoxOn(hDlg, IDS_BLOCK);</P>
<P ALIGN="JUSTIFY">&#9;else</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisBoxOn(hDlg, IDS_NOBLOCK);</P>
<P ALIGN="JUSTIFY">&#9;</P>
<P ALIGN="JUSTIFY">&#9;SendDlgItemMessage(hDlg,&#9;&#9;/* dialog handle&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;IDS_PORTNO,&#9;&#9;&#9;/* where to send msg&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;EM_SETSEL,&#9;&#9;&#9;/* select characters&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;NULL,&#9;&#9;&#9;&#9;/* additional info&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;MAKELONG(0, 0x7fff));&#9;&#9;/* entire contents&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;SendDlgItemMessage(hDlg,&#9;&#9;/* dialog handle&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;IDS_BUFFLEN,&#9;&#9;&#9;/* where to send msg&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;EM_SETSEL,&#9;&#9;&#9;/* select characters&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;NULL,&#9;&#9;&#9;&#9;/* additional info&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;&#9;MAKELONG(0, 0x7fff));&#9;&#9;/* entire contents&#9;*/</P>
<P ALIGN="JUSTIFY">&#9;SetFocus(GetDlgItem(hDlg, IDS_BUFFLEN));</P>
<P ALIGN="JUSTIFY">&#9;return (TRUE);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">    case WM_COMMAND:</P>
<P ALIGN="JUSTIFY">&#9;switch (wParam){</P>
<P ALIGN="JUSTIFY">&#9;case IDS_CLIENT:</P>
<P ALIGN="JUSTIFY">&#9;    /* USer has set to Shout */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProgBoxOn(hDlg, IDS_CLIENT);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>    tClientOrServer = iShout;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;</FONT><FONT SIZE=3>    SetDlgItemText(hMainDlg, IDD_COHOST,"Foreign host:");</P>
<P ALIGN="JUSTIFY">&#9;    SetDlgItemText(hMainDlg, IDD_HNAME,"");</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDS_SERVER:</P>
<P ALIGN="JUSTIFY">&#9;    /* USer has set to Listen */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProgBoxOn(hDlg, IDS_SERVER);</P>
<P ALIGN="JUSTIFY">&#9;    tClientOrServer = iListen;</P>
<P ALIGN="JUSTIFY">&#9;    SetDlgItemText(hMainDlg, IDD_COHOST,"Listening to:");</P>
<P ALIGN="JUSTIFY">&#9;    SetDlgItemText(hMainDlg, IDD_HNAME,"[Hit 'Start']");</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDS_TCP:</P>
<P ALIGN="JUSTIFY">&#9;    /* USer has set to TCP */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProtoBoxOn(hDlg, IDS_TCP);</P>
<P ALIGN="JUSTIFY">&#9;    temporary_protocol = iTCP;</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDS_UDP:</P>
<P ALIGN="JUSTIFY">&#9;    /* USer has set to UDP */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProtoBoxOn(hDlg, IDS_UDP);</P>
<P ALIGN="JUSTIFY">&#9;    temporary_protocol = iUDP;</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDS_BLOCK:</P>
<P ALIGN="JUSTIFY">&#9;    /* User has set to blocking mode */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisBoxOn(hDlg, IDS_BLOCK);</P>
<P ALIGN="JUSTIFY">&#9;    temporary_option = 0L;</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDS_NOBLOCK:</P>
<P ALIGN="JUSTIFY">&#9;    /* User has set to nonblocking mode */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisBoxOn(hDlg, IDS_NOBLOCK);</P>
<P ALIGN="JUSTIFY">&#9;    temporary_option = 1L;</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;case IDOK:</P>
<P ALIGN="JUSTIFY">&#9;    /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用户已完成对设置的修改</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    buffer_len = GetDlgItemInt(hDlg, IDS_BUFFLEN, NULL, 0);</P>
<P ALIGN="JUSTIFY">&#9;    if (buffer_len == 0 || buffer_len &gt; 8192) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;MessageBox(hOurWnd, "Buffer length must be between 1 and 8K",</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;   "Settings()", </P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;   MB_OK | MB_APPLMODAL | MB_ICONSTOP);</P>
<P ALIGN="JUSTIFY">&#9;&#9;return (FALSE);</P>
<P ALIGN="JUSTIFY">&#9;    }</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;    port_no = GetDlgItemInt(hDlg, IDS_PORTNO, NULL, 0);</P>
<P ALIGN="JUSTIFY">&#9;    if (port_no == 0) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;MessageBox(hDlg, "Port number must be between 0 and 65,535",</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;   "Settings()", </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;&#9;</FONT><FONT SIZE=3>   MB_OK | MB_APPLMODAL | MB_ICONSTOP);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;</FONT><FONT SIZE=3>return (FALSE);</P>
<P ALIGN="JUSTIFY">&#9;    }</P>
<P ALIGN="JUSTIFY">&#9;    len     = buffer_len;</P>
<P ALIGN="JUSTIFY">&#9;    iPortNo = port_no;</P>
<P ALIGN="JUSTIFY">&#9;    blocking_option = temporary_option;</P>
<P ALIGN="JUSTIFY">&#9;    iProto&#9;    = temporary_protocol;</P>
<P ALIGN="JUSTIFY">&#9;    iClientOrServer = tClientOrServer;</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;case IDCANCEL:</P>
<P ALIGN="JUSTIFY">&#9;    /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用户不想改变设置</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    EndDialog(hDlg, TRUE);</P>
<P ALIGN="JUSTIFY">&#9;    return (TRUE);</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;default:</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">    default:</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    }</P>
<P ALIGN="JUSTIFY">    return (FALSE);</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">    switch (ButtonID) {</P>
<P ALIGN="JUSTIFY">    case IDS_BLOCK:</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_BLOCK, 1);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_NOBLOCK, 0);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    case IDS_NOBLOCK:</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_BLOCK, 0);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_NOBLOCK, 1);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    default:</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    }</P>
<P ALIGN="JUSTIFY">    return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisProtoBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">    switch (ButtonID) {</P>
<P ALIGN="JUSTIFY">    case IDS_TCP:</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_TCP, 1);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_UDP, 0);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    case IDS_UDP:</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_TCP, 0);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_UDP, 1);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    default:</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    }</P>
<P ALIGN="JUSTIFY">    return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">CheckThisProgBoxOn(HWND hDlg, int ButtonID)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">    switch (ButtonID) {</P>
<P ALIGN="JUSTIFY">    case IDS_CLIENT: /* Shout */</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_CLIENT, 1);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_SERVER, 0);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    case IDS_SERVER: /* Listen */</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_CLIENT, 0);</P>
<P ALIGN="JUSTIFY">&#9;CheckDlgButton(hDlg, IDS_SERVER, 1);</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    default:</P>
<P ALIGN="JUSTIFY">&#9;break;</P>
<P ALIGN="JUSTIFY">    }</P>
<P ALIGN="JUSTIFY">    return;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>以下就是我们如何处理“模拟阻塞”-本函数检查消息队列,如果发现需要处理的消息,就返回一个正的值。</FONT><FONT SIZE=3>*/</P>
<P ALIGN="JUSTIFY">int</P>
<P ALIGN="JUSTIFY">ShoutBlockingHook (void)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">  MSG msg;&#9;&#9;/* lets us pull messages via PeekMessage */</P>
<P ALIGN="JUSTIFY">  int ret = PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">  if (ret) {</P>
<P ALIGN="JUSTIFY">    TranslateMessage(&amp;msg);</P>
<P ALIGN="JUSTIFY">    DispatchMessage(&amp;msg);</P>
<P ALIGN="JUSTIFY">  }</P>
<P ALIGN="JUSTIFY">  return ret;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">char *</P>
<P ALIGN="JUSTIFY">_calloc (nelem, elsize)</P>
<P ALIGN="JUSTIFY"> unsigned nelem, elsize;</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">&#9; HANDLE hMem;</P>
<P ALIGN="JUSTIFY">&#9; PSTR ptr;</P>
<P ALIGN="JUSTIFY">&#9; unsigned size = nelem * elsize;</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;if ((hMem = LocalAlloc(LPTR, size)) == NULL)</P>
<P ALIGN="JUSTIFY">&#9;&#9;return (char *) 0;</P>
<P ALIGN="JUSTIFY">&#9;if ((ptr = LocalLock(hMem)) == NULL) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;LocalFree(hMem);</P>
<P ALIGN="JUSTIFY">&#9;&#9;return (char *) 0;</P>
<P ALIGN="JUSTIFY">&#9;}</P>
<P ALIGN="JUSTIFY">&#9;return (char *) ptr;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void</P>
<P ALIGN="JUSTIFY">_free (void *cP)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">&#9;(void) LocalFree(LocalHandle((WORD) cP));</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">void </P>
<P ALIGN="JUSTIFY">ClearBoxes(HWND hOurDlg)</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -