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

📄 wal.c

📁 windows 网络编程。pdf文档
💻 C
📖 第 1 页 / 共 5 页
字号:
	    	    	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 + -