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

📄 3-4.html

📁 介绍各种平台进行SOCKET编程的好东东。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<P ALIGN="JUSTIFY">&#9;    wMinorVersion = MINOR_VERSION;</P>
<P ALIGN="JUSTIFY">&#9;    VersionReqd=WSA_MAKEWORD(wMajorVersion, wMinorVersion);</P>
<P ALIGN="JUSTIFY">  </P>
<P ALIGN="JUSTIFY">&#9;    lpmyWSAData = (LPWSADATA)_calloc(1, sizeof(WSADATA));</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;    ret = WSAStartup(VersionReqd, lpmyWSAData);</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;    if (ret != 0){</P>
<P ALIGN="JUSTIFY">&#9;&#9;wshout_err (hOurDlg, WSAGetLastError(), "WSAStartup()");</P>
<P ALIGN="JUSTIFY">&#9;    }</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;    return (TRUE); </P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;case WM_CLOSE:</P>
<P ALIGN="JUSTIFY">&#9;    PostMessage(hOurDlg, WM_COMMAND, IDM_EXIT, 0L);</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;case WM_SYSCOMMAND:</P>
<P ALIGN="JUSTIFY">&#9;    SendMessage(hOurWnd, message, wParam, lParam);</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;    </P>
<P ALIGN="JUSTIFY">&#9;case WM_COMMAND:</P>
<P ALIGN="JUSTIFY">&#9;    switch (wParam) {</P>
<P ALIGN="JUSTIFY">&#9;    case IDD_CONNECT:&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>按下连接按钮</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    case IDM_START:&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选择了</FONT><FONT SIZE=3>Start</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>菜单项</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;run_cancelled = FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>不能重入</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;if (running){</P>
<P ALIGN="JUSTIFY">&#9;&#9;    MessageBox(hOurWnd,"Shout is already running !",</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;"Shout", MB_OK | MB_APPLMODAL | MB_ICONEXCLAMATION);</P>
<P ALIGN="JUSTIFY">&#9;&#9;    return FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;ClearBoxes(hOurDlg);</P>
<P ALIGN="JUSTIFY">&#9;&#9;running = TRUE;</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;&#9;</FONT><FONT SIZE=3>if (iClientOrServer == iShout) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;   /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>确保有主机名</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;   if (GetDlgItemText (hOurDlg, IDD_HNAME, hostnm, 80) &lt; 2) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;       MessageBeep(0);</P>
<P ALIGN="JUSTIFY">&#9;&#9;       SetDlgItemText(hOurDlg, </P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;              IDD_COMMENT,"No hostname specified");</P>
<P ALIGN="JUSTIFY">&#9;&#9;       running = FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;       break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;   }</P>
<P ALIGN="JUSTIFY">&#9;&#9;   sd = ResolveAndConnectHost((char FAR *)hostnm,hOurDlg,iProto,</P>
<P ALIGN="JUSTIFY">&#9;&#9;                              iPortNo);</P>
<P ALIGN="JUSTIFY">&#9;&#9;   if (sd == SOCKET_ERROR) {/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无法创建套接口</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;       running = FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;       break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;   }</P>
<P ALIGN="JUSTIFY">&#9;        }</P>
<P ALIGN="JUSTIFY">&#9;&#9;else {</P>
<P ALIGN="JUSTIFY">&#9;&#9;   sd = GetSocketAndBind(hOurDlg, iProto, iPortNo);</P>
<P ALIGN="JUSTIFY">&#9;&#9;   if (sd == SOCKET_ERROR) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;    running = FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;   }</P>
<P ALIGN="JUSTIFY">&#9;        }</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;&#9;/* Set the I/O mode of the socket */</P>
<P ALIGN="JUSTIFY">&#9;&#9;if (blocking_option) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;    lret = 1L;  /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>非阻塞模式</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    ioctlsocket(sd, FIONBIO, (u_long FAR *) &amp;lret);</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;else {</P>
<P ALIGN="JUSTIFY">&#9;&#9;    lret = 0L; /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>阻塞模式</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    ioctlsocket(sd, FIONBIO, (u_long FAR *) &amp;lret);</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;&#9;if (iClientOrServer == iShout) {  /* SHOUT */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>产生数据并写入套接口</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    if (iProto == iTCP) </P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;lret = TWriteData(sd, hOurDlg, len);</P>
<P ALIGN="JUSTIFY">&#9;&#9;    else /* UDP */</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;lret = UWriteData(sd, hOurDlg, len);</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;else {&#9;/* LISTEN */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    if (iProto == iTCP)</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;lret = TReadData(sd,hOurDlg, len);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;</FONT><FONT SIZE=3>    else /* UDP */</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;&#9;</FONT><FONT SIZE=3>lret = UReadData(sd,hOurDlg, len);</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;&#9;closesocket(sd);</P>
<P ALIGN="JUSTIFY">&#9;&#9;running = FALSE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    case IDD_CANCEL:</P>
<P ALIGN="JUSTIFY">&#9;&#9;if (running) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;    /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>停止</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;    ret = WSACancelBlockingCall();</P>
<P ALIGN="JUSTIFY">&#9;&#9;    run_cancelled = TRUE;</P>
<P ALIGN="JUSTIFY">&#9;&#9;    if (ret == SOCKET_ERROR) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;/* WSANOTINITIALISED or WSAENETDOWN or WSAEINVAL */</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;if (h_errno == WSAENETDOWN) {</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;    /* Watch out for hAcceptSock! */</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;    /* close what is left of the connection */</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;    closesocket(sd);</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;    }</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    case IDM_EXIT:</P>
<P ALIGN="JUSTIFY">&#9;&#9;ret = WSACleanup();</P>
<P ALIGN="JUSTIFY">&#9;&#9;if (ret == SOCKET_ERROR &amp;&amp; h_errno == WSAEINPROGRESS){</P>
<P ALIGN="JUSTIFY">&#9;&#9;    MessageBox(hOurWnd, </P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;"Data transfer in progress.\nStop transfer first.",</P>
<P ALIGN="JUSTIFY">&#9;&#9;&#9;"WndProc()", MB_OK | MB_APPLMODAL|MB_ICONINFORMATION);</P>
<P ALIGN="JUSTIFY">&#9;&#9;    break; /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>一个套接口正处于阻塞状态</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;}</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;&#9;_free((char NEAR *) lpmyWSAData);</P>
<P ALIGN="JUSTIFY">&#9;&#9;EndDialog(hOurDlg, TRUE) ; /* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>退出</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    case IDM_ABOUT:</P>
<P ALIGN="JUSTIFY">&#9;&#9;lpProcAbout = MakeProcInstance(About, hInst);</P>
<P ALIGN="JUSTIFY">&#9;&#9;DialogBox(hInst, "AboutBox", hOurDlg, lpProcAbout);</P>
<P ALIGN="JUSTIFY">&#9;&#9;FreeProcInstance(lpProcAbout);</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    case IDM_SETTINGS:</P>
<P ALIGN="JUSTIFY">&#9;&#9;lpProcSettings = MakeProcInstance(Settings, hInst);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;</FONT><FONT SIZE=3>DialogBox(hInst, "SettingsDialog", hOurDlg, lpProcSettings);</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">&#9;&#9;</FONT><FONT SIZE=3>FreeProcInstance(lpProcSettings);</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    default:</P>
<P ALIGN="JUSTIFY">&#9;&#9;break;</P>
<P ALIGN="JUSTIFY">&#9;&#9;</P>
<P ALIGN="JUSTIFY">&#9;    } /* switch (wParam) */</P>
<P ALIGN="JUSTIFY">&#9;    break;</P>
<P ALIGN="JUSTIFY">&#9;} /* switch (message) */</P>
<P ALIGN="JUSTIFY">    return FALSE;</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>此函数处理</FONT><FONT SIZE=3>About</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对话框</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">BOOL FAR PASCAL About(HWND hDlg, WORD message, WORD wParam, LONG lParam)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">    char tempBuf[15];</P>
<P ALIGN="JUSTIFY">    </P>
<P ALIGN="JUSTIFY">    switch (message) {</P>
<P ALIGN="JUSTIFY">    case WM_INITDIALOG:</P>
<P ALIGN="JUSTIFY">&#9;SetDlgItemText(hDlg, IDA_COPYRIGHT,(LPSTR)lpmyWSAData-&gt;szDescription);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;wsprintf(tempBuf, "%d.%2d\n",MAJOR_VERSION, MINOR_VERSION);</P>
<P ALIGN="JUSTIFY">&#9;SetDlgItemText(hDlg, IDA_APP_VERSION, (LPSTR) tempBuf);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;wsprintf(tempBuf, "%d.%2d\n", </P>
<P ALIGN="JUSTIFY">&#9;         lpmyWSAData-&gt;wVersion%256,lpmyWSAData-&gt;wVersion/256);</P>
<P ALIGN="JUSTIFY">&#9;SetDlgItemText (hDlg, IDA_DLL_VERSION, (LPSTR) tempBuf);</P>
<P ALIGN="JUSTIFY">&#9;return (FALSE);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">    case WM_COMMAND:</P>
<P ALIGN="JUSTIFY">&#9;if (wParam == IDOK</P>
<P ALIGN="JUSTIFY">&#9;|| wParam == IDCANCEL) {</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;break;</P>
<P ALIGN="JUSTIFY">    }</P>
<P ALIGN="JUSTIFY">    return (FALSE);</P>
<P ALIGN="JUSTIFY">}</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>此函数处理</FONT><FONT SIZE=3>Settings </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对话框</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">BOOL FAR PASCAL Settings(HWND hDlg, WORD message, WORD wParam, LONG lParam)</P>
<P ALIGN="JUSTIFY">{</P>
<P ALIGN="JUSTIFY">    int buffer_len = len;</P>
<P ALIGN="JUSTIFY">    int port_no    = iPortNo;</P>
<P ALIGN="JUSTIFY">    </P>
<P ALIGN="JUSTIFY">    switch (message) {</P>
<P ALIGN="JUSTIFY">    case WM_INITDIALOG:</P>
<P ALIGN="JUSTIFY">&#9;/* Select a default send() buffer length */</P>
<P ALIGN="JUSTIFY">&#9;SetDlgItemInt(hDlg, IDS_BUFFLEN, len, 0);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;/* Select a default port number */</P>
<P ALIGN="JUSTIFY">&#9;SetDlgItemInt(hDlg, IDS_PORTNO, iPortNo, 0);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">&#9;if (iClientOrServer == iShout)&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序类型</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProgBoxOn(hDlg, IDS_CLIENT);</P>
<P ALIGN="JUSTIFY">&#9;else</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProgBoxOn(hDlg, IDS_SERVER);</P>
<P ALIGN="JUSTIFY">&#9;</P>
<P ALIGN="JUSTIFY">&#9;if (iProto == iTCP)&#9;&#9;&#9;/* </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>协议类型</FONT><FONT SIZE=3> */</P>
<P ALIGN="JUSTIFY">&#9;    CheckThisProtoBoxOn(hDlg, IDS_TCP);</P>
<P ALIGN="JUSTIFY">&#9;else</P>

⌨️ 快捷键说明

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