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

📄 stest.c

📁 Porting the Simple Sockets Library Dr. Charles E. Campbell, Jr.
💻 C
字号:
/* Stest.c: this file contains code which allows one to test if data *  is present via the socket and not be blocked (not held, not made to sleep) * *  Returns: number of bytes of data awaiting perusal (which may be 0) *	         or EOF if unable to "select" the socket *                  or select returns 1 but nothing is on socket */#include <stdio.h>#define SSLNEEDTIME#include "sockets.h"/* --------------------------------------------------------------------- * Source Code: */#ifdef __PROTOTYPE__int Stest(Socket *skt)#elseint Stest(skt)Socket *skt;#endif{fd_set         emask;fd_set         rmask;fd_set         wmask;int            ret;short          result;static char    buf[PM_BIGBUF];struct timeval timeout;/* sanity check */if(!skt) {	return -1;	}FD_ZERO(&rmask);FD_SET(skt->skt,&rmask);FD_ZERO(&wmask);FD_ZERO(&emask);timeout.tv_sec = 0;timeout.tv_usec= 0;#ifdef SSLNOPEEKresult = select(skt->skt+1,rmask.fds_bits,wmask.fds_bits,emask.fds_bits,&timeout);#elseresult = select(skt->skt+1,&rmask,&wmask,&emask,&timeout);#endif	/* SSLNOPEEK */if(result < 0) {	return EOF;	}/* server sockets return the select result (client awaiting connection) */if(skt->type == PM_SERVER) {	return result;	}#ifdef SSLNOPEEKif(FD_ISSET(skt->skt,&rmask)) {	return 1;	}#else	/* #ifdef SSLNOPEEK ... #else ... #endif *//* test if message available from socket, return qty bytes avail */if(FD_ISSET(skt->skt,&rmask)) {	ret= recv(skt->skt,buf,PM_BIGBUF-1,MSG_PEEK);	/* return error indication when select returned a result of 1	 * (indicating that *something* is on the socket)	 * and recv indicates that *nothing* is on the socket	 */	if(result == 1 && ret == 0) ret= EOF;	return ret;	}#endif	/* #ifdef SSLNOPEEK ... #else ... #endif	*//* socket is empty */return 0;}/* --------------------------------------------------------------------- */

⌨️ 快捷键说明

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