📄 wal.c
字号:
return TRUE;
case IDB_IOADVANCED:
/* Call the advanced options dialog box to further qualify */
lpfnWSIOAdvProc =
MakeProcInstance((FARPROC)WSIOAdvDlgProc, hInst);
DialogBox (hInst,
"IOAdvancedDlg",
hwnd,
lpfnWSIOAdvProc);
FreeProcInstance((FARPROC) lpfnWSIOAdvProc);
return TRUE;
case IDC_BYTES_PER_IO:
case IDC_IO_PER_LOOP:
case IDC_MAX_IO_PER_LOOP:
case IDC_LOOP_INTERVAL:
case IDC_MAXBYTES:
return TRUE;
}
break;
}
return FALSE;
} /* end WSIOOptDlgProc() */
/*---------------------------------------------------------------------
* Function: WSIOAdvDlgProc()
*
* Description: Advanced dialog procedure, used to adjust the obscure
* automatic loop adjustment parameters (used for Asynch only).
*/
BOOL CALLBACK WSIOAdvDlgProc (
HWND hDlg,
UINT msg,
UINT wParam,
LONG lParam)
{
lParam = lParam; /* avoid warning */
wParam = wParam;
switch (msg) {
case WM_INITDIALOG:
SetDlgItemInt (hDlg, IDC_LOOPUP, stWSAppData.nLoopsUpMax, FALSE);
SetDlgItemInt (hDlg, IDC_LOOPDN, stWSAppData.nLoopsDnMax, FALSE);
return FALSE;
case WM_COMMAND:
switch (wParam) {
case IDC_LOOPUP:
case IDC_LOOPDN:
return TRUE;
case IDOK:
stWSAppData.nLoopsUpMax = GetDlgItemInt (hDlg, IDC_LOOPUP, NULL, FALSE);
stWSAppData.nLoopsDnMax = GetDlgItemInt (hDlg, IDC_LOOPDN, NULL, FALSE);
/* fall through */
case IDCANCEL:
EndDialog (hDlg, 0);
return TRUE;
}
break;
}
return FALSE;
} /* end WSIOAdvDlgProc() */
/*---------------------------------------------------------------------
* Function: WSSockOptDlgProc()
*
* Description: Dialog procedure to set and/or get any socket option
* using setsockopt() and/or getsockopt().
*/
BOOL CALLBACK WSSockOptDlgProc (
HWND hDlg,
UINT msg,
UINT wParam,
LPARAM lParam)
{
static int wRet, nOptName, nOptVal, nOptLen, nOptIDC, nLevel, WSAerr;
static HANDLE hwnd, hInst;
static struct linger stLinger;
switch (msg) {
case WM_INITDIALOG:
/* get parameters passed */
if (lParam) {
hInst = LOWORD(lParam);
hwnd = HIWORD(lParam);
}
/* set display values */
CheckDlgButton (hDlg, IDC_ACCEPTCON, TRUE);
SetDlgItemInt (hDlg, IDC_SOCKIN, stWSAppData.nSock, FALSE);
SetDlgItemText (hDlg, IDC_LEVELIN, "SOL_SOCKET");
SetDlgItemInt (hDlg, IDC_OPTVAL, 0, FALSE);
SetDlgItemInt (hDlg, IDC_OPTLEN, 2, FALSE);
SetDlgItemInt (hDlg, IDC_LINGERFLAG, 0, FALSE);
SetDlgItemInt (hDlg, IDC_LINGERSECS, 0, FALSE);
nOptName = SO_ACCEPTCONN;
SetFocus (GetDlgItem (hDlg, IDB_GETSOCKOPT));
CenterWnd(hDlg, hwnd, TRUE);
return FALSE;
case WM_COMMAND:
switch (wParam) {
case IDCANCEL:
case IDOK:
EndDialog (hDlg, TRUE);
return TRUE;
case IDB_GETSOCKOPT:
/* Get the parameter values, and call getsockopt(),
* then display the results! */
nLevel = ((nOptName == TCP_NODELAY) ? IPPROTO_TCP : SOL_SOCKET);
nOptLen = sizeof(int);
wRet = getsockopt(stWSAppData.nSock,
nLevel,
nOptName,
((nOptName == SO_LINGER) ?
(char FAR *)&stLinger : (char FAR *)&nOptVal),
(int FAR *)&nOptLen);
if (wRet == SOCKET_ERROR) {
WSAerr = WSAGetLastError();
WSAperror(WSAerr, "getsockopt()", hInst);
} else if (nOptName == SO_LINGER) {
SetDlgItemInt (hDlg, IDC_LINGERFLAG,
stLinger.l_onoff, FALSE);
SetDlgItemInt (hDlg, IDC_LINGERSECS,
stLinger.l_linger, FALSE);
} else {
/* Display the results */
SetDlgItemInt (hDlg, IDC_OPTVAL, nOptVal, FALSE);
}
return TRUE;
case IDB_SETSOCKOPT:
/* Get the parameter values, and call getsockopt(),
* then display the results! */
if (nOptName == SO_LINGER) {
stLinger.l_onoff =
(u_short) GetDlgItemInt (hDlg, IDC_LINGERFLAG, NULL, FALSE);
stLinger.l_linger =
(u_short) GetDlgItemInt (hDlg, IDC_LINGERSECS, NULL, FALSE);
} else {
nOptVal =
(int) GetDlgItemInt (hDlg, IDC_OPTVAL, NULL, FALSE);
}
nLevel = ((nOptName == TCP_NODELAY) ? IPPROTO_TCP : SOL_SOCKET);
nOptLen = sizeof(int);
wRet = setsockopt(stWSAppData.nSock,
nLevel,
nOptName,
((nOptName == SO_LINGER) ?
(char FAR *)&stLinger : (char FAR *)&nOptVal),
nOptLen);
if (wRet == SOCKET_ERROR) {
WSAerr = WSAGetLastError();
WSAperror(WSAerr, "setsockopt()", hInst);
} else if (nOptName == SO_LINGER) {
SetDlgItemInt (hDlg, IDC_LINGERFLAG,
stLinger.l_onoff, FALSE);
SetDlgItemInt (hDlg, IDC_LINGERSECS,
stLinger.l_linger, FALSE);
} else {
/* Display the results */
SetDlgItemInt (hDlg, IDC_OPTVAL, nOptVal, FALSE);
}
return TRUE;
case IDC_ACCEPTCONN:
nOptName = SO_ACCEPTCONN;
break;
case IDC_BROADCAST:
nOptName = SO_BROADCAST;
break;
case IDC_DEBUG:
nOptName = SO_DEBUG;
break;
case IDC_DONTLINGER:
nOptName = SO_DONTLINGER;
break;
case IDC_DONTROUTE:
nOptName = SO_DONTROUTE;
break;
case IDC_ERROR:
nOptName = SO_ERROR;
break;
case IDC_KEEPALIVE:
nOptName = SO_KEEPALIVE;
break;
case IDC_LINGER:
nOptName = SO_LINGER;
break;
case IDC_OOBINLINE:
nOptName = SO_OOBINLINE;
break;
case IDC_RCVBUF:
nOptName = SO_RCVBUF;
break;
case IDC_REUSEADDR:
nOptName = SO_REUSEADDR;
break;
case IDC_SNDBUF:
nOptName = SO_SNDBUF;
break;
case IDC_TYPE:
nOptName = SO_TYPE;
break;
case IDC_TCPNODELAY:
SetDlgItemText (hDlg, IDC_LEVELIN, "IPPROTO_TCP");
nOptName = TCP_NODELAY;
return TRUE;
case IDC_SOCKIN:
case IDC_LEVELIN:
case IDC_OPTVAL:
SetDlgItemText (hDlg, IDC_LEVELIN, "SOL_SOCKET");
return TRUE;
}
return TRUE;
}
return FALSE;
} /* end WSSockOptDlgProc() */
/*---------------------------------------------------------------------
* Function: WSOobOptDlgProc()
*
* Description:
*/
BOOL CALLBACK WSOobOptDlgProc (
HWND hDlg,
UINT msg,
UINT wParam,
LPARAM lParam)
{
static BOOL bOobSend, bOobPoll, bOobInLine, bOobOutSound, bOobInSound;
static HANDLE hwnd, hInst;
switch (msg) {
case WM_INITDIALOG:
/* get parameters passed */
if (lParam) {
hInst = LOWORD(lParam);
hwnd = HIWORD(lParam);
}
/* init local work variables from actual values */
bOobSend = (stWSAppData.nOptions & OPTION_OOBSEND);
bOobPoll = (stWSAppData.nOptions & OPTION_OOBPOLL);
bOobInLine = (stWSAppData.nOptions & OPTION_OOBINLINE);
bOobOutSound = (stWSAppData.nOptions & OPTION_OOBOUTSOUND);
bOobInSound = (stWSAppData.nOptions & OPTION_OOBINSOUND);
/* set display values */
CheckDlgButton (hDlg, IDC_OOBSEND, bOobSend);
CheckDlgButton (hDlg, IDC_OOBPOLL, bOobPoll);
CheckDlgButton (hDlg, IDC_OOBINLINE, bOobInLine);
CheckDlgButton (hDlg, IDC_OOBOUTSOUND, bOobOutSound);
CheckDlgButton (hDlg, IDC_OOBINSOUND, bOobInSound);
SetDlgItemInt(hDlg, IDC_OOBSENDAMNT, stWSAppData.nOobOutLen, FALSE);
SetDlgItemInt(hDlg, IDC_OOBRECVAMNT, stWSAppData.nOobInLen, FALSE);
SetDlgItemInt(hDlg, IDC_OOBSENDINTRVL, stWSAppData.nOobInterval, FALSE);
SetFocus (GetDlgItem (hDlg, IDOK));
CenterWnd(hDlg, hwnd, TRUE);
return FALSE;
case WM_COMMAND:
switch (wParam) {
case IDCANCEL:
/* "Cancel" button pressed, so just leave (ignore any new values) */
EndDialog (hDlg, FALSE);
return TRUE;
case IDOK:
/* "OK" button pressed, so get the new values (if there are any) */
/* If socket available, call setsockopt(SO_OOBINLINE) to
* set option to selected setting (enabled or disabled) */
if (stWSAppData.nSockState != STATE_NONE) {
set_oobinline (hInst, hwnd, bOobInLine);
}
stWSAppData.nOptions |= OPTION_OOBSEND;
stWSAppData.nOptions &= (bOobSend ? OPTION_MASK : ~OPTION_OOBSEND);
stWSAppData.nOptions |= OPTION_OOBPOLL;
stWSAppData.nOptions &= (bOobPoll ? OPTION_MASK : ~OPTION_OOBPOLL);
stWSAppData.nOptions |= OPTION_OOBINLINE;
stWSAppData.nOptions &= (bOobInLine ? OPTION_MASK : ~OPTION_OOBINLINE);
stWSAppData.nOptions |= OPTION_OOBOUTSOUND;
stWSAppData.nOptions &= (bOobOutSound ? OPTION_MASK : ~OPTION_OOBOUTSOUND);
stWSAppData.nOptions |= OPTION_OOBINSOUND;
stWSAppData.nOptions &= (bOobInSound ? OPTION_MASK : ~OPTION_OOBINSOUND);
stWSAppData.nOobOutLen = GetDlgItemInt (hDlg, IDC_OOBSENDAMNT, NULL, FALSE);
stWSAppData.nOobInLen = GetDlgItemInt (hDlg, IDC_OOBRECVAMNT, NULL, FALSE);
stWSAppData.nOobInterval = GetDlgItemInt (hDlg, IDC_OOBSENDINTRVL, NULL, FALSE);
EndDialog (hDlg, TRUE);
return TRUE;
case IDC_OOBSEND:
bOobSend = !bOobSend;
// CheckDlgButton (hDlg, IDC_OOBSEND, bOobSend);
return TRUE;
case IDC_OOBPOLL:
bOobPoll = !bOobPoll;
// CheckDlgButton (hDlg, IDC_OOBPOLL, bOobPoll);
return TRUE;
case IDC_OOBINLINE:
bOobInLine = !bOobInLine;
// CheckDlgButton (hDlg, IDC_OOBINLINE, bOobInLine);
return TRUE;
case IDC_OOBOUTSOUND:
bOobOutSound = !bOobOutSound;
return TRUE;
case IDC_OOBINSOUND:
bOobInSound = !bOobInSound;
return TRUE;
case IDC_OOBSENDAMNT:
case IDC_OOBRECVAMNT:
case IDC_OOBSENDINTRVL:
return TRUE;
}
break;
}
return FALSE;
} /* end WSOobOptDlgProc() */
/*---------------------------------------------------------------------
* Function: WSSocketDlgProc()
*
* Description:
*/
BOOL CALLBACK WSSocketDlgProc (
HWND hDlg,
UINT msg,
UINT wParam,
LONG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -