亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rfbproto.c

?? 可以在msdos下用bc3編譯通過的, 上面1中的代碼是無法編譯通過的, 在MSDOS下學習的可以下載這個版本, 可以省去不少在MSDOS編譯時的痛苦時光.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *  Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * *  This is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This software is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this software; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, *  USA. *//* * rfbproto.c - functions to deal with client side of RFB protocol. */#include <unistd.h>#include <errno.h>#include <pwd.h>#include <vncviewer.h>#ifndef NANOX#include <X11/Xatom.h>#endif#include <vncauth.h>static Bool HandleHextileEncoding8(int x, int y, int w, int h);static Bool HandleHextileEncoding16(int x, int y, int w, int h);static Bool HandleHextileEncoding32(int x, int y, int w, int h);int rfbsock;char *desktopName;rfbPixelFormat myFormat;rfbServerInitMsg si;struct timeval updateRequestTime;Bool sendUpdateRequest;int endianTest = 1;/* note that the CoRRE encoding uses this buffer and assumes it is big enough   to hold 255 * 255 * 32 bits -> 260100 bytes.  640*480 = 307200 bytes *//* also hextile assumes it is big enough to hold 16 * 16 * 32 bits */#define BUFFER_SIZE (640*480)static char buffer[BUFFER_SIZE];void PrintPixelFormat(rfbPixelFormat *format);/* * ConnectToRFBServer. */BoolConnectToRFBServer(const char *hostname, int port){    unsigned int host;    if (!StringToIPAddr(hostname, &host)) {	fprintf(stderr,"%s: couldn't convert '%s' to host address\n",		programName,hostname);	return False;    }    rfbsock = ConnectToTcpAddr(host, port);    if (rfbsock < 0) {	fprintf(stderr,"%s: unable to connect to VNC server\n",		programName);	return False;    }    return True;}/* * InitialiseRFBConnection. */BoolInitialiseRFBConnection(int sock){    rfbProtocolVersionMsg pv;    int major,minor;    Bool authWillWork = True;    CARD32 authScheme, reasonLen, authResult;    char *reason;    CARD8 challenge[CHALLENGESIZE];    char *passwd;    int i;    rfbClientInitMsg ci;    /* if the connection is immediately closed, don't report anything, so       that pmw's monitor can make test connections */    if (listenSpecified)	errorMessageFromReadExact = False;    if (!ReadExact(sock, pv, sz_rfbProtocolVersionMsg)) return False;    errorMessageFromReadExact = True;    pv[sz_rfbProtocolVersionMsg] = 0;    if (sscanf(pv,rfbProtocolVersionFormat,&major,&minor) != 2) {	fprintf(stderr,"%s: Not a valid VNC server\n",programName);	return False;    }    fprintf(stderr,"%s: VNC server supports protocol version %d.%d "	    "(viewer %d.%d)\n",	    programName,major,minor,rfbProtocolMajorVersion,	    rfbProtocolMinorVersion);    if ((major == 3) && (minor < 3)) {	/* if server is before 3.3 authentication won't work */	authWillWork = False;    } else {	/* any other server version, just tell it what we want */	major = rfbProtocolMajorVersion;	minor = rfbProtocolMinorVersion;    }    sprintf(pv,rfbProtocolVersionFormat,major,minor);    if (!WriteExact(sock, pv, sz_rfbProtocolVersionMsg)) return False;    if (!ReadExact(sock, (char *)&authScheme, 4)) return False;    authScheme = Swap32IfLE(authScheme);    switch (authScheme) {    case rfbConnFailed:	if (!ReadExact(sock, (char *)&reasonLen, 4)) return False;	reasonLen = Swap32IfLE(reasonLen);	reason = malloc(reasonLen);	if (!ReadExact(sock, reason, reasonLen)) return False;	fprintf(stderr,"%s: VNC connection failed: %.*s\n",		programName, (int)reasonLen, reason);	return False;    case rfbNoAuth:	fprintf(stderr,"%s: No authentication needed\n",programName);	break;    case rfbVncAuth:	if (!authWillWork) {	    fprintf(stderr,		    "\n%s: VNC server uses the old authentication scheme.\n"		    "You should kill your old desktop(s) and restart.\n"		    "If you really need to connect to this desktop use "		    "vncviewer3.2\n\n",		    programName);	    return False;	}	if (!ReadExact(sock, (char *)challenge, CHALLENGESIZE)) return False;	if (passwdFile) {	    passwd = vncDecryptPasswdFromFile(passwdFile);	} else {	    static char pass[32] = {"foobar2"};	    passwd = pass;	    /* passwd = getpass("Password: "); */	    if (strlen(passwd) == 0) {		fprintf(stderr,"%s: Reading password failed\n",programName);		return False;	    }	    if (strlen(passwd) > 8) {		passwd[8] = '\0';	    }	}	vncEncryptBytes(challenge, passwd);	/* Lose the password from memory */	for (i=0; i<strlen(passwd); i++) {	    passwd[i] = '\0';	}	if (!WriteExact(sock, (char *)challenge, CHALLENGESIZE)) return False;	if (!ReadExact(sock, (char *)&authResult, 4)) return False;	authResult = Swap32IfLE(authResult);	switch (authResult) {	case rfbVncAuthOK:	    fprintf(stderr,"%s: VNC authentication succeeded\n",programName);	    break;	case rfbVncAuthFailed:	    fprintf(stderr,"%s: VNC authentication failed\n",programName);	    return False;	case rfbVncAuthTooMany:	    fprintf(stderr,"%s: VNC authentication failed - too many tries\n",		    programName);	    return False;	default:	    fprintf(stderr,"%s: Unknown VNC authentication result: %d\n",		    programName,(int)authResult);	    return False;	}	break;    default:	fprintf(stderr,		"%s: Unknown authentication scheme from VNC server: %d\n",		programName,(int)authScheme);	return False;    }    ci.shared = (shareDesktop ? 1 : 0);    if (!WriteExact(sock, (char *)&ci, sz_rfbClientInitMsg)) return False;    if (!ReadExact(sock, (char *)&si, sz_rfbServerInitMsg)) return False;    si.framebufferWidth = Swap16IfLE(si.framebufferWidth);    si.framebufferHeight = Swap16IfLE(si.framebufferHeight);    si.format.redMax = Swap16IfLE(si.format.redMax);    si.format.greenMax = Swap16IfLE(si.format.greenMax);    si.format.blueMax = Swap16IfLE(si.format.blueMax);    si.nameLength = Swap32IfLE(si.nameLength);    if (((updateRequestX + updateRequestW) > si.framebufferWidth) ||	((updateRequestY + updateRequestH) > si.framebufferHeight))    {	fprintf(stderr,		"%s: region requested is outside server's framebuffer\n",		programName);	return False;    }    if (updateRequestW == 0)	updateRequestW = si.framebufferWidth - updateRequestX;    if (updateRequestH == 0)	updateRequestH = si.framebufferHeight - updateRequestY;    desktopName = malloc(si.nameLength + 1);    if (!ReadExact(sock, desktopName, si.nameLength)) return False;    desktopName[si.nameLength] = 0;    fprintf(stderr,"%s: Desktop name \"%s\"\n",programName,desktopName);    fprintf(stderr,	    "%s: Connected to VNC server, using protocol version %d.%d\n",	    programName, rfbProtocolMajorVersion, rfbProtocolMinorVersion);    fprintf(stderr,"%s: VNC server default format:\n",programName);    PrintPixelFormat(&si.format);    return True;}/* * SetFormatAndEncodings. */BoolSetFormatAndEncodings(){    rfbSetPixelFormatMsg spf;    char buf[sz_rfbSetEncodingsMsg + MAX_ENCODINGS * 4];    rfbSetEncodingsMsg *se = (rfbSetEncodingsMsg *)buf;    CARD32 *encs = (CARD32 *)(&buf[sz_rfbSetEncodingsMsg]);    int len = 0;    int i;    spf.type = rfbSetPixelFormat;    spf.format = myFormat;    spf.format.redMax = Swap16IfLE(spf.format.redMax);    spf.format.greenMax = Swap16IfLE(spf.format.greenMax);    spf.format.blueMax = Swap16IfLE(spf.format.blueMax);    if (!WriteExact(rfbsock, (char *)&spf, sz_rfbSetPixelFormatMsg))	return False;    se->type = rfbSetEncodings;    se->nEncodings = 0;    for (i = 0; i < nExplicitEncodings; i++) {	encs[se->nEncodings++] = Swap32IfLE(explicitEncodings[i]);    }    if (SameMachine(rfbsock)) {	encs[se->nEncodings++] = Swap32IfLE(rfbEncodingRaw);    }    if (addCopyRect)	encs[se->nEncodings++] = Swap32IfLE(rfbEncodingCopyRect);    if (addHextile)	encs[se->nEncodings++] = Swap32IfLE(rfbEncodingHextile);    if (addCoRRE)	encs[se->nEncodings++] = Swap32IfLE(rfbEncodingCoRRE);    if (addRRE)	encs[se->nEncodings++] = Swap32IfLE(rfbEncodingRRE);    len = sz_rfbSetEncodingsMsg + se->nEncodings * 4;    se->nEncodings = Swap16IfLE(se->nEncodings);    if (!WriteExact(rfbsock, buf, len)) return False;    return True;}/* * SendIncrementalFramebufferUpdateRequest. */BoolSendIncrementalFramebufferUpdateRequest(){    return SendFramebufferUpdateRequest(updateRequestX, updateRequestY,					updateRequestW, updateRequestH, True);}/* * SendFramebufferUpdateRequest. */BoolSendFramebufferUpdateRequest(int x, int y, int w, int h, Bool incremental){    rfbFramebufferUpdateRequestMsg fur;    fur.type = rfbFramebufferUpdateRequest;    fur.incremental = incremental ? 1 : 0;    fur.x = Swap16IfLE(x);    fur.y = Swap16IfLE(y);    fur.w = Swap16IfLE(w);    fur.h = Swap16IfLE(h);    if (!WriteExact(rfbsock, (char *)&fur, sz_rfbFramebufferUpdateRequestMsg))	return False;    gettimeofday(&updateRequestTime, NULL);    sendUpdateRequest = False;    return True;}/* * SendPointerEvent. */BoolSendPointerEvent(int x, int y, int buttonMask){    rfbPointerEventMsg pe;    pe.type = rfbPointerEvent;    pe.buttonMask = buttonMask;    if (x < 0) x = 0;    if (y < 0) y = 0;    pe.x = Swap16IfLE(x);    pe.y = Swap16IfLE(y);    return WriteExact(rfbsock, (char *)&pe, sz_rfbPointerEventMsg);}/* * SendKeyEvent. */BoolSendKeyEvent(CARD32 key, Bool down){    rfbKeyEventMsg ke;    ke.type = rfbKeyEvent;    ke.down = down ? 1 : 0;    ke.key = Swap32IfLE(key);    return WriteExact(rfbsock, (char *)&ke, sz_rfbKeyEventMsg);}/* * SendClientCutText. */BoolSendClientCutText(char *str, int len){    rfbClientCutTextMsg cct;    cct.type = rfbClientCutText;    cct.length = Swap32IfLE(len);    return  (WriteExact(rfbsock, (char *)&cct, sz_rfbClientCutTextMsg) &&	     WriteExact(rfbsock, str, len));}/* * HandleRFBServerMessage. */BoolHandleRFBServerMessage(){    rfbServerToClientMsg msg;    if (!ReadExact(rfbsock, (char *)&msg, 1))	return False;    switch (msg.type) {    case rfbSetColourMapEntries:    {	int i;	CARD16 rgb[3];	XColor xc;	if (!ReadExact(rfbsock, ((char *)&msg) + 1,			 sz_rfbSetColourMapEntriesMsg - 1))	    return False;	msg.scme.firstColour = Swap16IfLE(msg.scme.firstColour);	msg.scme.nColours = Swap16IfLE(msg.scme.nColours);	for (i = 0; i < msg.scme.nColours; i++) {	    if (!ReadExact(rfbsock, (char *)rgb, 6))		return False;	    xc.pixel = msg.scme.firstColour + i;	    xc.red = Swap16IfLE(rgb[0]);	    xc.green = Swap16IfLE(rgb[1]);	    xc.blue = Swap16IfLE(rgb[2]);	    xc.flags = DoRed|DoGreen|DoBlue;/* printf("XStoreColor (%d,%d,%d) = %d\n", xc.red>>8, xc.green>>8, xc.blue>>8, xc.pixel); */	    XStoreColor(dpy, cmap, &xc);	}	break;    }    case rfbFramebufferUpdate:    {	rfbFramebufferUpdateRectHeader rect;	int linesToRead;	int bytesPerLine;	int i;	if (!ReadExact(rfbsock, ((char *)&msg.fu) + 1,			 sz_rfbFramebufferUpdateMsg - 1))	    return False;	msg.fu.nRects = Swap16IfLE(msg.fu.nRects);	for (i = 0; i < msg.fu.nRects; i++) {	    if (!ReadExact(rfbsock, (char *)&rect,			     sz_rfbFramebufferUpdateRectHeader))		return False;	    rect.r.x = Swap16IfLE(rect.r.x);	    rect.r.y = Swap16IfLE(rect.r.y);	    rect.r.w = Swap16IfLE(rect.r.w);	    rect.r.h = Swap16IfLE(rect.r.h);	    rect.encoding = Swap32IfLE(rect.encoding);	    if ((rect.r.x + rect.r.w > si.framebufferWidth) ||		(rect.r.y + rect.r.h > si.framebufferHeight))	    {		fprintf(stderr,"%s: rect too large: %dx%d at (%d, %d)\n",		       programName, rect.r.w, rect.r.h, rect.r.x, rect.r.y);		return False;	    }	    if ((rect.r.h * rect.r.w) == 0) {		fprintf(stderr,"%s: zero size rect - ignoring\n",programName);		continue;	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品国产免费观看同学| 午夜欧美一区二区三区在线播放| 色哟哟亚洲精品| 国产一区二区精品久久91| 亚洲国产精品精华液网站| 中文字幕日本乱码精品影院| 久久久亚洲精华液精华液精华液 | 国产精品77777| 国产伦精品一区二区三区免费| 蜜桃久久精品一区二区| 亚洲丰满少妇videoshd| 日韩精品成人一区二区在线| 日本成人中文字幕| 看片的网站亚洲| 久久99蜜桃精品| 国产精品一二二区| 国产精品系列在线播放| 成人久久久精品乱码一区二区三区 | 亚洲国产精品一区二区尤物区| 亚洲品质自拍视频| 亚洲一区二区偷拍精品| 一区二区三区日韩精品视频| 中文字幕欧美日韩一区| 99久久婷婷国产综合精品| 北条麻妃一区二区三区| 国产成人免费视频网站高清观看视频| 粉嫩av一区二区三区在线播放| 一区二区日韩av| 亚洲一区免费视频| 日韩av一区二区三区| 日韩av中文在线观看| 亚洲女同ⅹxx女同tv| 综合久久一区二区三区| 国产欧美日韩另类一区| 一个色在线综合| 亚洲成人一区在线| 亚洲乱码日产精品bd| 夜色激情一区二区| 日韩精品一二三区| 国产91丝袜在线播放九色| 国产成人99久久亚洲综合精品| 国产剧情av麻豆香蕉精品| 国产成人自拍高清视频在线免费播放| 91蜜桃在线观看| 欧美色图第一页| 日韩精品一区国产麻豆| 中文字幕不卡的av| 亚洲人成影院在线观看| 国模套图日韩精品一区二区 | 日韩一级欧美一级| 国产精品污污网站在线观看| 亚洲欧洲av一区二区三区久久| 日韩美女久久久| 九九**精品视频免费播放| 国产精品夜夜嗨| 欧美一区二区免费视频| 久久综合九色综合欧美98| 欧美激情一区在线| 亚洲一级二级三级在线免费观看| 日韩一区精品视频| 日韩精品福利网| 国产裸体歌舞团一区二区| 97久久人人超碰| 欧美激情在线观看视频免费| 一区二区久久久久久| 亚洲日本乱码在线观看| 国产高清精品久久久久| 91视频国产观看| 18涩涩午夜精品.www| 日本成人在线视频网站| 亚洲婷婷综合久久一本伊一区| 经典三级在线一区| 在线免费观看日本欧美| 亚洲情趣在线观看| 蜜臀99久久精品久久久久久软件| 欧美午夜在线观看| 国产精品久久久久久亚洲伦| 亚洲激情中文1区| 欧美日韩在线播放一区| 国产日本欧美一区二区| 亚洲人成精品久久久久久 | 9191久久久久久久久久久| 中文字幕免费不卡| 日本vs亚洲vs韩国一区三区 | 久久蜜臀精品av| 亚洲妇女屁股眼交7| 欧美久久久久久久久中文字幕| 中文字幕免费不卡| 亚洲欧洲精品一区二区精品久久久| 成人一道本在线| 2014亚洲片线观看视频免费| 国产69精品久久777的优势| 欧美一区二区黄| 国产在线视频精品一区| 日韩欧美久久一区| 专区另类欧美日韩| 欧美另类一区二区三区| 亚洲综合自拍偷拍| 欧美电影免费观看高清完整版在 | 欧美大片顶级少妇| 亚洲精品中文字幕乱码三区| av资源网一区| 中文字幕一区在线观看视频| 欧美日韩一区成人| 亚洲 欧美综合在线网络| 精品国产免费久久| 国产一二精品视频| 亚洲激情图片一区| 欧美日韩一卡二卡三卡| 午夜电影一区二区| 中文一区一区三区高中清不卡| 国产麻豆精品95视频| 亚洲欧洲中文日韩久久av乱码| 91小视频免费观看| 亚洲福利视频三区| 日韩欧美国产一区二区三区| 久久国产免费看| 亚洲一区二区三区国产| 在线观看视频一区| 成人久久久精品乱码一区二区三区| 中文字幕 久热精品 视频在线 | 欧美韩国日本综合| 91在线无精精品入口| 美腿丝袜一区二区三区| 久久精品亚洲麻豆av一区二区| 欧美性大战久久久| 蜜乳av一区二区| 亚洲图片自拍偷拍| 久久精品亚洲国产奇米99| 日韩欧美色综合网站| 91国产成人在线| 精品一区二区三区的国产在线播放| 综合分类小说区另类春色亚洲小说欧美| 91亚洲大成网污www| 国产精品夜夜嗨| 亚洲成人在线观看视频| 91小视频免费看| 懂色av噜噜一区二区三区av| 亚洲免费三区一区二区| 国产精品乱人伦| 欧美一区二区三区成人| 91精品国产综合久久久久久| 国产成人一区二区精品非洲| 久久99国产精品久久99果冻传媒| 国产欧美一区二区精品性色| 精品久久久网站| 欧美日韩一区成人| 色吧成人激情小说| 国产一区二区0| 国产精品一二三| 久久精品国产成人一区二区三区 | 亚洲精品日日夜夜| 精品久久五月天| 欧美精品一二三四| 中文字幕制服丝袜一区二区三区| 国产三区在线成人av| 欧美精品一二三| 欧美一级片免费看| 91丨九色丨尤物| 欧美在线免费视屏| 成人午夜av电影| 91网站黄www| 成人小视频在线观看| caoporm超碰国产精品| 激情综合色综合久久| 亚洲日韩欧美一区二区在线| 国产校园另类小说区| 不卡的av在线| 色综合天天综合网国产成人综合天| 六月丁香综合在线视频| 国产激情视频一区二区三区欧美| 日日夜夜免费精品| 国产丶欧美丶日本不卡视频| 免费日本视频一区| 国产乱淫av一区二区三区| 免费观看在线色综合| 国产xxx精品视频大全| 国产一区二区三区电影在线观看| 丰满白嫩尤物一区二区| 国产aⅴ综合色| 六月丁香综合在线视频| 紧缚奴在线一区二区三区| 欧美日韩免费高清一区色橹橹| 欧美成人猛片aaaaaaa| 欧美大白屁股肥臀xxxxxx| 国产精品久久久久桃色tv| 欧美精彩视频一区二区三区| 亚洲狠狠爱一区二区三区| 亚洲视频一二区| 亚洲日本在线a| 亚洲精品一区二区三区99| 欧美在线视频你懂得| 国产在线一区观看| 成人黄色免费短视频| 欧美写真视频网站| 日韩午夜在线播放| 亚洲欧美一区二区视频| 亚洲一区二区三区四区的| 成人性生交大片免费看中文| 国产成人啪午夜精品网站男同|