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

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

?? socket.c

?? 關系型數據庫 Postgresql 6.5.2
?? C
字號:
/* Module:          socket.c * * Description:     This module contains functions for low level socket *                  operations (connecting/reading/writing to the backend) * * Classes:         SocketClass (Functions prefix: "SOCK_") * * API functions:   none * * Comments:        See "notice.txt" for copyright and license information. * */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "socket.h"#ifndef WIN32#include <stdlib.h>#include <string.h>	/* for memset */#endifextern GLOBAL_VALUES globals;#ifndef BOOL#define BOOL	int#endif#ifndef TRUE#define TRUE	(BOOL)1#endif#ifndef FALSE#define FALSE	(BOOL)0#endifvoidSOCK_clear_error(SocketClass *self){	self->errornumber = 0; 	self->errormsg = NULL; }SocketClass * SOCK_Constructor(){SocketClass *rv;    rv = (SocketClass *) malloc(sizeof(SocketClass));    if (rv != NULL) {		rv->socket = (SOCKETFD) -1;		rv->buffer_filled_in = 0;		rv->buffer_filled_out = 0;		rv->buffer_read_in = 0;		rv->buffer_in = (unsigned char *) malloc(globals.socket_buffersize);		if ( ! rv->buffer_in)			return NULL;		rv->buffer_out = (unsigned char *) malloc(globals.socket_buffersize);		if ( ! rv->buffer_out)			return NULL;		        rv->errormsg = NULL;        rv->errornumber = 0;		rv->reverse = FALSE;    }     return rv;}voidSOCK_Destructor(SocketClass *self){	if (self->socket != -1) {		if ( ! shutdown(self->socket, 2)) /* no sends or receives */			closesocket(self->socket);	}	if (self->buffer_in)		free(self->buffer_in);	if (self->buffer_out)		free(self->buffer_out);	free(self);}char SOCK_connect_to(SocketClass *self, unsigned short port, char *hostname){struct hostent *host;struct sockaddr_in sadr;unsigned long iaddr;	if (self->socket != -1) {		self->errornumber = SOCKET_ALREADY_CONNECTED;		self->errormsg = "Socket is already connected";		return 0;	}	memset((char *)&sadr, 0, sizeof(sadr));	/*	If it is a valid IP address, use it.		Otherwise use hostname lookup. 	*/	iaddr = inet_addr(hostname);	if (iaddr == INADDR_NONE) {		host = gethostbyname(hostname);		if (host == NULL) {			self->errornumber = SOCKET_HOST_NOT_FOUND;			self->errormsg = "Could not resolve hostname.";			return 0;		}		memcpy(&(sadr.sin_addr), host->h_addr, host->h_length);	}	else		memcpy(&(sadr.sin_addr), (struct in_addr *) &iaddr, sizeof(iaddr));	sadr.sin_family = AF_INET;	sadr.sin_port = htons(port);	self->socket = socket(AF_INET, SOCK_STREAM, 0);	if (self->socket == -1) {		self->errornumber = SOCKET_COULD_NOT_CREATE_SOCKET;		self->errormsg = "Could not create Socket.";		return 0;	}	if ( connect(self->socket, (struct sockaddr *)&(sadr),			sizeof(sadr))  < 0) {		self->errornumber = SOCKET_COULD_NOT_CONNECT;		self->errormsg = "Could not connect to remote socket.";		closesocket(self->socket);		self->socket = (SOCKETFD) -1;		return 0;	}	return 1;}void SOCK_get_n_char(SocketClass *self, char *buffer, int len){int lf;	if ( ! buffer) {		self->errornumber = SOCKET_NULLPOINTER_PARAMETER;		self->errormsg = "get_n_char was called with NULL-Pointer";		return;	}	for(lf=0; lf < len; lf++)		buffer[lf] = SOCK_get_next_byte(self);}void SOCK_put_n_char(SocketClass *self, char *buffer, int len){int lf;	if ( ! buffer) {		self->errornumber = SOCKET_NULLPOINTER_PARAMETER;		self->errormsg = "put_n_char was called with NULL-Pointer";		return;	}	for(lf=0; lf < len; lf++)		SOCK_put_next_byte(self, (unsigned char)buffer[lf]);}/*  bufsize must include room for the null terminator 	will read at most bufsize-1 characters + null. */void SOCK_get_string(SocketClass *self, char *buffer, int bufsize){register int lf = 0;	for (lf = 0; lf < bufsize; lf++)		if ( ! (buffer[lf] = SOCK_get_next_byte(self)))			return;			buffer[bufsize-1] = '\0';}void SOCK_put_string(SocketClass *self, char *string){register int lf;int len;	len = strlen(string)+1;	for(lf = 0; lf < len; lf++)		SOCK_put_next_byte(self, (unsigned char)string[lf]);}int SOCK_get_int(SocketClass *self, short len){char buf[4];	switch (len) {	case 2:		SOCK_get_n_char(self, buf, len);		if (self->reverse)			return *((unsigned short *) buf);		else			return ntohs( *((unsigned short *) buf) );	case 4:		SOCK_get_n_char(self, buf, len);		if (self->reverse)			return *((unsigned int *) buf);		else			return ntohl( *((unsigned int *) buf) );	default:		self->errornumber = SOCKET_GET_INT_WRONG_LENGTH;		self->errormsg = "Cannot read ints of that length";		return 0;	}}void SOCK_put_int(SocketClass *self, int value, short len){unsigned int rv;	switch (len) {	case 2:		rv = self->reverse ? value : htons( (unsigned short) value);		SOCK_put_n_char(self, (char *) &rv, 2);		return;	case 4:		rv = self->reverse ? value : htonl( (unsigned int) value);		SOCK_put_n_char(self, (char *) &rv, 4);		return;	default:		self->errornumber = SOCKET_PUT_INT_WRONG_LENGTH;		self->errormsg = "Cannot write ints of that length";		return;	 }}void SOCK_flush_output(SocketClass *self){int written;	written = send(self->socket, (char *)self->buffer_out, self->buffer_filled_out, 0);	if (written != self->buffer_filled_out) {		self->errornumber = SOCKET_WRITE_ERROR;		self->errormsg = "Could not flush socket buffer.";	}	self->buffer_filled_out = 0;}unsigned char SOCK_get_next_byte(SocketClass *self){	if (self->buffer_read_in >= self->buffer_filled_in) {	// there are no more bytes left in the buffer ->	// reload the buffer		self->buffer_read_in = 0;		self->buffer_filled_in = recv(self->socket, (char *)self->buffer_in, globals.socket_buffersize, 0);		mylog("read %d, global_socket_buffersize=%d\n", self->buffer_filled_in, globals.socket_buffersize);		if (self->buffer_filled_in == -1) {			self->errornumber = SOCKET_READ_ERROR;			self->errormsg = "Error while reading from the socket.";			self->buffer_filled_in = 0;		}		if (self->buffer_filled_in == 0) {			self->errornumber = SOCKET_CLOSED;			self->errormsg = "Socket has been closed.";			self->buffer_filled_in = 0;		}	}	return self->buffer_in[self->buffer_read_in++];}void SOCK_put_next_byte(SocketClass *self, unsigned char next_byte){int bytes_sent;	self->buffer_out[self->buffer_filled_out++] = next_byte;	if (self->buffer_filled_out == globals.socket_buffersize) {		// buffer is full, so write it out		bytes_sent = send(self->socket, (char *)self->buffer_out, globals.socket_buffersize, 0);		if (bytes_sent != globals.socket_buffersize) {			self->errornumber = SOCKET_WRITE_ERROR;			self->errormsg = "Error while writing to the socket.";		}		self->buffer_filled_out = 0;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩不卡免费| 在线日韩国产精品| 亚洲成人动漫av| 亚洲女人的天堂| 亚洲色图一区二区| 亚洲欧美乱综合| 亚洲欧美日韩中文播放| 国产精品成人免费| 国产精品色噜噜| 国产精品国产三级国产aⅴ入口 | 日韩毛片高清在线播放| 国产精品久久久99| 中文字幕精品一区二区三区精品| 久久午夜色播影院免费高清 | 精品99999| 2024国产精品视频| 久久人人97超碰com| 国产欧美一区二区三区在线看蜜臀 | 五月天网站亚洲| 图片区日韩欧美亚洲| 日韩精品一级中文字幕精品视频免费观看| 一区二区三区**美女毛片| 亚洲视频在线一区二区| 亚洲成人高清在线| 精品夜夜嗨av一区二区三区| 韩日欧美一区二区三区| 国产99精品视频| 99re亚洲国产精品| 欧美日韩大陆在线| 精品福利一二区| 亚洲欧洲国产专区| 日韩精品一区第一页| 日韩精品电影在线观看| 国精产品一区一区三区mba桃花| 国产精品一卡二| 色婷婷久久综合| 91精品啪在线观看国产60岁| 精品国产精品网麻豆系列| 日本一区二区久久| 婷婷六月综合网| 成人做爰69片免费看网站| 精品视频一区二区不卡| 欧美韩日一区二区三区四区| 亚洲国产日韩精品| 国产ts人妖一区二区| 欧美日韩aaa| 亚洲欧洲av色图| 久久99热99| 欧美午夜电影网| 欧美高清在线一区| 久久99精品国产麻豆婷婷洗澡| 99精品欧美一区二区三区小说 | 精品免费一区二区三区| 亚洲精品日韩一| 国产成人精品免费视频网站| 717成人午夜免费福利电影| 国产精品精品国产色婷婷| 麻豆91在线观看| 欧美亚洲国产一区二区三区| 久久久久久一二三区| 日日噜噜夜夜狠狠视频欧美人| 99久久婷婷国产| 国产精品美女一区二区三区| 激情综合网天天干| 在线播放中文一区| 亚洲成a人在线观看| 91啪亚洲精品| 中文字幕成人网| 国产99久久久久久免费看农村| 日韩免费成人网| 极品少妇xxxx偷拍精品少妇| 日韩一区二区精品葵司在线| 亚洲成人av一区二区三区| 欧美亚洲日本国产| 亚洲精品国产第一综合99久久| 91一区二区在线观看| ●精品国产综合乱码久久久久| 国产高清不卡一区| 久久精品人人做| 国产69精品久久久久毛片| 久久久久久久久久久黄色 | 久久众筹精品私拍模特| 日韩高清一区二区| 91精品蜜臀在线一区尤物| 婷婷综合另类小说色区| 在线不卡a资源高清| 蜜桃av一区二区在线观看| 精品久久久久久久久久久久久久久久久 | 亚洲天堂中文字幕| 日本久久精品电影| 一区二区三区精品视频| 在线视频欧美区| 午夜视频在线观看一区| 欧美一区二区三区在线| 成人免费观看视频| 国产精品久久久爽爽爽麻豆色哟哟| 风流少妇一区二区| 国产精品大尺度| 欧洲另类一二三四区| 日韩精品一级中文字幕精品视频免费观看 | 国产精品嫩草影院com| 色综合久久综合网97色综合| 亚洲国产中文字幕在线视频综合| 在线不卡一区二区| 国产乱子伦一区二区三区国色天香| 国产拍欧美日韩视频二区| 99精品视频一区二区| 午夜久久久久久久久| 精品久久久久久最新网址| 成人美女视频在线观看| 亚洲第一av色| 国产视频一区在线观看| 欧洲精品在线观看| 国内精品久久久久影院一蜜桃| 国产精品久久久久9999吃药| 欧美日韩精品一区二区三区| 国产精品中文字幕欧美| 亚洲黄一区二区三区| 久久综合九色综合久久久精品综合| aaa国产一区| 蜜臀久久99精品久久久久久9| 亚洲色图19p| 久久综合久色欧美综合狠狠| 欧美在线观看一区二区| 国产成人无遮挡在线视频| 亚洲国产精品久久艾草纯爱| 国产免费观看久久| 日韩欧美在线观看一区二区三区| 99久久亚洲一区二区三区青草| 裸体一区二区三区| 亚洲色图一区二区三区| 精品久久久久久久久久久久包黑料| 一本高清dvd不卡在线观看 | 国产福利一区二区| 人人精品人人爱| 亚洲.国产.中文慕字在线| 国产精品女人毛片| 国产日韩欧美电影| 精品日本一线二线三线不卡| 7777精品伊人久久久大香线蕉完整版 | 成人av一区二区三区| 五月婷婷综合在线| 一区二区三区不卡在线观看| 中文字幕欧美一区| 国产精品你懂的在线欣赏| 国产网站一区二区三区| 日韩欧美久久久| 欧美一级精品在线| 9191成人精品久久| 911精品国产一区二区在线| 欧美午夜精品一区二区三区| 色综合久久久久久久久久久| voyeur盗摄精品| 不卡av在线网| 99精品视频一区| 97久久精品人人爽人人爽蜜臀| 国产91在线看| 粉嫩av一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 麻豆91在线观看| 国产精品亚洲视频| 国产成人亚洲综合色影视| 国产一区二区在线影院| 国产河南妇女毛片精品久久久 | 97精品久久久久中文字幕| 91性感美女视频| 日本道精品一区二区三区| 欧美亚洲动漫制服丝袜| 欧美精选一区二区| 日韩精品一区二区在线观看| 久久综合色之久久综合| 国产精品你懂的在线| 一区二区三区四区不卡在线| 亚洲成人免费视| 免费精品视频最新在线| 国产精品18久久久久久vr | 一区二区三区中文字幕| 亚洲制服欧美中文字幕中文字幕| 亚洲高清在线视频| 精品亚洲国产成人av制服丝袜| 国产乱子伦视频一区二区三区| caoporen国产精品视频| 在线观看免费一区| 欧美一级欧美一级在线播放| 国产亚洲精品免费| 亚洲免费视频中文字幕| 秋霞午夜鲁丝一区二区老狼| 国产成人综合视频| 在线观看网站黄不卡| 精品三级av在线| 一区二区三区四区不卡视频 | 国产99久久久久| 欧美在线免费视屏| 国产亚洲制服色| 亚洲香肠在线观看| 国产成人啪午夜精品网站男同| 欧美日韩你懂得| 国产精品超碰97尤物18| 蜜桃av噜噜一区二区三区小说| 成人精品视频一区|