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

📄 speek.c

📁 项目描述: slsnif is a serial port logging utility. It listens to the specified serial port and logs all
💻 C
字号:
/* Speek.c: */#include <stdio.h>#define SSLNEEDTIME#include "sockets.h"/* ------------------------------------------------------------------------- *//* Speek: this function peeks at the socket and returns a buffer full of *  whatever is on it * *  Returns: qty of data in buf *           1  (SSLNOPEEK) something on buffer, but cannot peek *           0  if nothing *          EOF on bad select (socket error) *              or on select == 1 (something there) but recv indicates *              that nothing is there */#ifdef __PROTOTYPE__int Speek(  Socket *skt,      /* socket handle           */  void   *buf,      /* socket character buffer */  int     buflen)   /* max length of buffer    */#elseint Speek(  skt,              /* socket handle           */  buf,              /* socket character buffer */  buflen)           /* max length of buffer    */Socket *skt;void   *buf;int     buflen;#endif{short          result;struct timeval timeout;fd_set         rmask;fd_set         wmask;fd_set         emask;/* insure a properly null-byte terminated buffer if nothing is returned */((char *) buf)[0]= '\0';/* sanity check */if(!skt) {	return 0;	}FD_ZERO(&rmask);FD_SET(skt->skt,&rmask);FD_ZERO(&wmask);FD_ZERO(&emask);timeout.tv_sec = 0;timeout.tv_usec= 0;/* select checks if * the file descriptor set (fds) has something ready for reading */#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);#endifif(result < 0) {	return EOF;	}if(result == 0) { /* no descriptors ready for reading */	return 0;	}#ifdef SSLNOPEEKreturn 1;#else/* test if message available from socket, return qty bytes avail */if(FD_ISSET(skt->skt,&rmask)) {	buflen= recv(skt->skt,buf,buflen,MSG_PEEK);	if(result == 1 && buflen == 0) buflen= EOF;	return buflen;	}/* socket is empty */return 0;#endif	/* #ifdef SSLNOPEEK ... #else ... #endif */}/* --------------------------------------------------------------------- * vim: ts=4 */

⌨️ 快捷键说明

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