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

📄 sockbuf.c

📁 支持Telnet功能的Modem通讯程序
💻 C
字号:
#ifdef TERMNET#include <termnet.h>#endif#include <stdio.h>	/*stderr,(perror)*/#include <sys/types.h>	/*->socket.h (u_short etc.)*/#include <sys/socket.h>	/*(send,recv)*/#include "defs.h"	/*->sockbuf.h (uchar,SOCKBUFR_SIZE,TTYBUFR_SIZE)*/#include "sockbuf.h"	/*sockBufR,sockBufW*/#include "sock.h"	/*sock*/#include "verbose.h"	/*VERB_MISC*//* reading socket */voidsockBufRead(void){    int l;    l = recv(sock.fd, sockBufR.buf, sizeof(sockBufR.buf), 0);    if (l <= 0) {	sock.alive = 0;	if (l == 0)	    verboseOut(VERB_MISC, "Connection closed by peer.\r\n");	else	    /* PPP link down or something to reach here. */	    /* v0.0 exited, which comm progs don't expect. */	    /* now just NO CARRIERs. Thanks >> Rod May */	    perror("recv()");	return;    }    sockBufR.ptr = sockBufR.buf;    sockBufR.end = sockBufR.buf + l;}/* writing socket */voidsockBufWrite(void){    int wl,l;    wl = sockBufW.ptr - sockBufW.top;    if (wl == 0) return;    l = send(sock.fd, sockBufW.top, wl, 0);    if (l <= 0) {	sock.alive = 0;	if (l == 0)	    verboseOut(VERB_MISC, "Connection closed by peer.\r\n");	else	    perror("send()");	return;    } else if (l < wl) {	sockBufW.top += l;	/*return 1;*/ /* needs retry */	return;    }    sockBufW.ptr = sockBufW.top = sockBufW.buf;    sockBufW.stop = 0;    return;}voidputSock1(uchar c){    if (sockBufW.ptr >= sockBufW.buf + SOCKBUFW_SIZE) { /* limit */	if (sockBufW.ptr >= sockBufW.buf + SOCKBUFW_SIZE_A) { /*actual limit*/	    fprintf(stderr,"\asockBufW overrun.\n");	    return;	} else sockBufW.stop = 1; /* flow control */    }    *sockBufW.ptr++ = c;}voidputSockN(const uchar *cp, int n){    for (; n > 0; n--,cp++) putSock1(*cp);}

⌨️ 快捷键说明

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