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

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

?? socketfile.c

?? 一個tcp/ip協議棧,帶有PPP、IP、TCP、UDP等協議
?? C
字號:
/** * Socket Device Filesystem Driver * * @file socketfile.c * @author <a href="mailto:c_graham@hinge.mistral.co.uk>Craig Graham</a> * @ingroup fsdevices * @{ */#include <config.h>#include <file.h>#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <file.h>#include <debug.h>#include <adl.h>#include <ls588.h>#include <semaphore.h>#include <interupt.h>#include <sys/socket.h>#include <malloc.h>//#include "netconf.h"//#include "net.h"#include "netdebug.h"#include "netbuf.h"#include "netppp.h"#include "nettcp.h"#include "netudp.h"static int socket_chdir(const char *dir);static int socket_mkdir(const char *dir);static void *socket_open(const char *name,int mode);static int socket_close(void *sdata);static long socket_read(void *sdata, unsigned char *buf, long l);static long socket_write(void *sdata, const unsigned char *buf, long l);static long socket_lseek(void *sdata, long offset, int whence);static int socket_fdelete(const char *name);static long socket_ioctl(void *sdata,UI32 ioctlValue,void *data);static long socket_poll(void *sdata);/** * Internal socket information */typedef struct {	int domain;	int type;	int protocol;	int id;} SOCKET_FS_DATA;/** * Exported driver interface for Socket Filesystem */FS_DRIVER socketfs={	/** Device Name */	"SocketFS",	/** chdir */	socket_chdir,	/** mkdir */	socket_mkdir,	/** open */	socket_open,	/** close */	socket_close,	/** read */	socket_read,	/** write */	socket_write,	/** lseek */	socket_lseek,	/** fdelete */	socket_fdelete,	/** ioctl */	socket_ioctl,	/** poll */	socket_poll};/** * stub for chdir */static int socket_chdir(const char *dir){	return 0;}/** * stub for mkdir */static int socket_mkdir(const char *dir){	return 0;}/** * Open the socket device */static void *socket_open(const char *name,int mode){	SOCKET_FS_DATA *sdata;	//GENERAL_DEBUG(("socket_open:'%s'\n",name));	sdata=(SOCKET_FS_DATA*)malloc(sizeof(SOCKET_FS_DATA));	if(sdata==NULL)		return NULL;	sdata->id=-1;	sdata->domain=AF_UNSPEC;	sdata->type=SOCK_STREAM;	sdata->protocol=0;	return (void*)sdata;}/** * Close the socket device */static int socket_close(void *sdata){	//GENERAL_DEBUG(("socket_close\n"));	switch(((SOCKET_FS_DATA*)sdata)->protocol)	{		case IPPROTO_TCP:			tcpClose(((SOCKET_FS_DATA*)sdata)->id);			//tcpWait(((SOCKET_FS_DATA*)sdata)->id);			break;		case IPPROTO_UDP:			udpClose(((SOCKET_FS_DATA*)sdata)->id);			break;	}	return 0;}/** * Read data from the socket device */static long socket_read(void *sdata, unsigned char *buf, long l){	int rtn;	//GENERAL_DEBUG(("socket_read: len=%ld\n",l));//	printf("socket_read: l=%ld\n",l);	switch(((SOCKET_FS_DATA*)sdata)->protocol)	{		case IPPROTO_TCP:			rtn=tcpRead(((SOCKET_FS_DATA*)sdata)->id,buf,l);			break;		case IPPROTO_UDP:			rtn=udpRead(((SOCKET_FS_DATA*)sdata)->id,buf,l);			break;	}	return rtn;}/** * Write data to the socket device */static long socket_write(void *sdata, const unsigned char *buf, long l){	int rtn;//	printf("socket_write: l=%ld\n",l);	switch(((SOCKET_FS_DATA*)sdata)->protocol)	{		case IPPROTO_TCP:			rtn=tcpWrite(((SOCKET_FS_DATA*)sdata)->id,buf,l);			break;		case IPPROTO_UDP:			rtn=udpWrite(((SOCKET_FS_DATA*)sdata)->id,buf,l);			break;		default:			printf("socket_write: unknown protocol\n");			break;	}	return rtn;}/** * stub for lseek */static long socket_lseek(void *sdata, long offset, int whence){	return 0;}/** * stub for fdelete */static int socket_fdelete(const char *name){	return 0;}/** * stub for ioctl */static long socket_ioctl(void *sdata,UI32 ioctlValue,void *data){	long rtn;	switch(ioctlValue)	{		case IOCTL_DEVCAPS:			rtn=IOCTL_DEVCAPS|IOCTL_PENDINGDATALENGTH|IOCTL_SOCKDOMAIN|IOCTL_SOCKTYPE|IOCTL_SOCKPROTOCOL;			break;		case IOCTL_PENDINGDATALENGTH:			//GENERAL_DEBUG(("should return amount of data available here\n"));			rtn=0;			break;		case IOCTL_SOCKDOMAIN:			if(data)				((SOCKET_FS_DATA*)sdata)->domain=*(int*)data;			rtn=((SOCKET_FS_DATA*)sdata)->domain;			break;		case IOCTL_SOCKTYPE:			if(data)				((SOCKET_FS_DATA*)sdata)->type=*(int*)data;			rtn=((SOCKET_FS_DATA*)sdata)->type;			break;		case IOCTL_SOCKPROTOCOL:			if((data)&&(((SOCKET_FS_DATA*)sdata)->id==-1))			{				((SOCKET_FS_DATA*)sdata)->protocol=*(int*)data;				switch(((SOCKET_FS_DATA*)sdata)->protocol)				{					case IPPROTO_UDP:						((SOCKET_FS_DATA*)sdata)->id=udpOpen();						printf("socket_ioctl: protocol=udp, ucIP ID=%d\n",((SOCKET_FS_DATA*)sdata)->id);						break;					case IPPROTO_TCP:						((SOCKET_FS_DATA*)sdata)->id=tcpOpen();						printf("socket_ioctl: protocol=tcp, ucIP ID=%d\n",((SOCKET_FS_DATA*)sdata)->id);//						{//							int inCnt=10;//							tcpIOCtl(((SOCKET_FS_DATA*)sdata)->id, TCPCTLS_KEEPALIVE, &inCnt);//						}						break;					default:						//GENERAL_DEBUG(("socket_ioctl:IOCTL_SOCKPROTOCOL: unsupported protocol %d\n",((SOCKET_FS_DATA*)sdata)->protocol));						((SOCKET_FS_DATA*)sdata)->protocol=-1;						break;				}			}			rtn=((SOCKET_FS_DATA*)sdata)->protocol;			break;		default:			rtn=-1;			break;	}	return rtn;}static long socket_poll(void *sdata){	long rtn;	switch(((SOCKET_FS_DATA*)sdata)->protocol)	{		case IPPROTO_UDP:			rtn=udpPoll(((SOCKET_FS_DATA*)sdata)->id);			break;		case IPPROTO_TCP:			rtn=tcpPoll(((SOCKET_FS_DATA*)sdata)->id);			break;	}	return rtn;}/** * Helper function - standard Unix way of creating a socket */int socket(int domain, int type, int protocol){	int fd;	fd=open("/dev/socket/0",O_RDWR);	if(fd>=0)	{		printf("socket: socket fd=%d\n",fd);		ioctl(fd,IOCTL_SOCKDOMAIN,&domain);		ioctl(fd,IOCTL_SOCKTYPE,&type);		if(protocol==0)			protocol=(type==SOCK_STREAM)?IPPROTO_TCP:IPPROTO_UDP;		ioctl(fd,IOCTL_SOCKPROTOCOL,&protocol);	}else{		while(1);			printf("socket: cann't open /dev/socket/0\n");	}	return fd;}/** * Helper function - standard Unix way of connecting a socket to a server. */int  connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen){	FILE *sf;	int rtn;	sf=fdopen(sockfd, "rw");	printf("connect:socket fd=%d\n",sockfd);	if(sf==NULL)	{		printf("connect: invalid socket handle\n");		return -1;	}	switch(serv_addr->na_family)	{		case AF_INET:			switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)			{				case IPPROTO_TCP:					rtn=tcpConnect(((SOCKET_FS_DATA*)sf->driverData)->id, (const struct sockaddr_in*)serv_addr, 0);					printf("tcpConnect returned %d\n",rtn);					break;				case IPPROTO_UDP:					rtn=udpConnect(((SOCKET_FS_DATA*)sf->driverData)->id, (const struct sockaddr_in*)serv_addr, 0);					printf("udpConnect returned %d\n",rtn);					break;				default:					printf("connect: unsupported protocol %ld\n",((SOCKET_FS_DATA*)sf->driverData)->protocol);					break;			}			break;		case AF_UNSPEC:			switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)			{				case IPPROTO_TCP:					rtn=tcpDisconnect(((SOCKET_FS_DATA*)sf->driverData)->id);					break;				case IPPROTO_UDP:					//rtn=udpDisconnect(((SOCKET_FS_DATA*)sf->driverData)->id);					break;				default:					printf("connect: unsupported protocol %ld\n",((SOCKET_FS_DATA*)sf->driverData)->protocol);					break;			}			break;		default:			printf("connect: unsupported address family %ld\n",serv_addr->na_family);			rtn=-1;			break;	}	return rtn;}int accept(int sockfd, struct sockaddr  *addr, socklen_t *addrlen){	FILE *sf;	int remoteId,remoteFD;	sf=fdopen(sockfd, "rw");	if(sf==NULL)	{		printf("accept: invalid socket handle\n");		return -1;	}	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			remoteId=tcpAccept(((SOCKET_FS_DATA*)sf->driverData)->id, (struct sockaddr_in *)addr);			if(remoteId>=0)			{				FILE *r_sf;				remoteFD=open("/dev/socket/0",O_RDWR);				if(remoteFD>=0)				{					r_sf=fdopen(remoteFD,"rw");					printf("accept: remoteFD=%d\n",remoteFD);					((SOCKET_FS_DATA*)r_sf->driverData)->protocol=IPPROTO_TCP;					((SOCKET_FS_DATA*)r_sf->driverData)->id=remoteId;					return remoteFD;				}else{					printf("accept: couldn't open /dev/socket/0\n");					tcpClose(remoteId);				}			}else{				printf("accept: uC/IP returned error code %d\n",remoteId);			}			break;		default:			printf("accept: cann't accept() on this class of socket\n");			break;	}	return -1;}int listen(int sockfd, int backlog){	FILE *sf;	int rtn=0;	sf=fdopen(sockfd, "rw");	if(sf==NULL)	{		printf("listen: cann't get FILE for fd=%d\n",sockfd);		return -1;	}	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			printf("calling tcpListen(%d,%d)\n",((SOCKET_FS_DATA*)sf->driverData)->id,backlog);			rtn=tcpListen(((SOCKET_FS_DATA*)sf->driverData)->id, backlog);			if(rtn<0)			{				setErrno(rtn);				rtn=-1;			}else{				rtn=0;			}			break;		case IPPROTO_UDP:			printf("calling udpListen(%d,%d)\n",((SOCKET_FS_DATA*)sf->driverData)->id,backlog);			rtn=udpListen(((SOCKET_FS_DATA*)sf->driverData)->id, backlog);			break;		default:			printf("listen: unknown protocol\n");			rtn=-1;			break;	}	return rtn;}int bind(int sockfd, struct sockaddr *addr, socklen_t addrlen){	FILE *sf;	int rtn;	//GENERAL_DEBUG(("bind: sockfd=%d\n",sockfd));	printf("bind: socket fd=%d\n",sockfd);	sf=fdopen(sockfd, "rw");	if(sf==NULL)	{		printf("bind: cann't get FILE for fd=%d\n",sockfd);		return -1;	}	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			//GENERAL_DEBUG(("calling tcpBind()\n"));			rtn=tcpBind(((SOCKET_FS_DATA*)sf->driverData)->id, (struct sockaddr_in*)addr);			printf(" - using tcp\n");			break;		case IPPROTO_UDP:			//GENERAL_DEBUG(("calling udpBind()\n"));			rtn=udpBind(((SOCKET_FS_DATA*)sf->driverData)->id, (struct sockaddr_in*)addr);			printf(" - using udp\n");			break;		default:			printf("bind: unknown protocol\n");			rtn=-1;			break;	}	return rtn;}long recvfrom(int sockfd,  void  *buf,  size_t len, int flags,  struct sockaddr *from, socklen_t *fromlen){	FILE *sf;	int rtn;	//GENERAL_DEBUG(("recvfrom()\n"));	sf=fdopen(sockfd, "rw");	if(sf==NULL)		return -1;	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			rtn=tcpRead(((SOCKET_FS_DATA*)sf->driverData)->id,buf,len);			break;		case IPPROTO_UDP:			//GENERAL_DEBUG(("calling udpRecvFrom()\n"));			rtn=udpRecvFrom(((SOCKET_FS_DATA*)sf->driverData)->id, buf, len, (struct sockaddr_in*)from);			break;	}	if(fromlen)		*fromlen=sizeof(struct sockaddr_in);	return rtn;}long sendto(int sockfd,  const void  *buf,  size_t len, int flags,  const struct sockaddr *to, socklen_t tolen){	FILE *sf;	int rtn;	//GENERAL_DEBUG(("sendto()\n"));	sf=fdopen(sockfd, "rw");	if(sf==NULL)		return -1;	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			tcpDisconnect(((SOCKET_FS_DATA*)sf->driverData)->id);			rtn=tcpConnect(((SOCKET_FS_DATA*)sf->driverData)->id, (const struct sockaddr_in*)to, 0);			if(rtn<0)				break;			rtn=tcpWrite(((SOCKET_FS_DATA*)sf->driverData)->id,buf,len);			break;		case IPPROTO_UDP:			//GENERAL_DEBUG(("calling udpSendTo()\n"));			rtn=udpSendTo(((SOCKET_FS_DATA*)sf->driverData)->id, buf, len, (const struct sockaddr_in*)to);			break;	}	return rtn;}void unblock(int sockfd){	FILE *sf;	sf=fdopen(sockfd, "rw");	if(sf==NULL)		return;	switch(((SOCKET_FS_DATA*)sf->driverData)->protocol)	{		case IPPROTO_TCP:			break;		case IPPROTO_UDP:			//GENERAL_DEBUG(("calling udpUnblockRead()\n"));			udpUnblockRead(((SOCKET_FS_DATA*)sf->driverData)->id);			break;	}}int setsockopt(int s, int level, int optname,  const  void *optval, socklen_t optlen){	// stub for setsockopt}int send(int s, const void *msg, size_t len, int flags){	FILE *sf;	sf=fdopen(s, "rw");	if(sf==NULL)	{		printf("send: error getting FILE from descriptor %d\n",s);		return -1;	}	return socket_write(sf->driverData, (const unsigned char*)msg, len);}int recv(int s, void *buf, size_t len, int flags){	FILE *sf;	sf=fdopen(s, "rw");	if(sf==NULL)	{		printf("recv: error getting FILE from descriptor %d\n",s);		return -1;	}	socket_read(sf->driverData, (unsigned char*)buf, len);}/** @} */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美欧美欧美首页| 欧美日韩在线三区| 成人深夜福利app| 成人精品免费视频| 欧美撒尿777hd撒尿| 日韩欧美一级特黄在线播放| 国产精品人成在线观看免费| 自拍av一区二区三区| 蜜桃视频一区二区三区在线观看| 精品写真视频在线观看| 欧美在线视频日韩| 国产欧美一区二区精品婷婷| 亚洲午夜免费视频| 国产成人自拍在线| 欧美亚洲综合网| 欧美国产精品劲爆| 久久99久久久欧美国产| 欧美日韩专区在线| 亚洲丝袜精品丝袜在线| 国产aⅴ综合色| 日韩欧美中文字幕一区| 亚洲v日本v欧美v久久精品| 国产宾馆实践打屁股91| 精品国一区二区三区| 亚洲成av人片| 欧美日韩国产免费一区二区| 国产精品不卡一区| 高清成人免费视频| 国产欧美一区二区在线| 久久精品国产秦先生| 日韩一区二区三区电影在线观看| 亚洲精品乱码久久久久久黑人| 成人免费看片app下载| 中文字幕免费不卡| 国产69精品久久久久毛片| 国产亚洲成aⅴ人片在线观看| 国产精品99久久久久久宅男| 国产欧美1区2区3区| thepron国产精品| 亚洲视频综合在线| 欧美在线高清视频| 青青国产91久久久久久| 久久综合999| 91女厕偷拍女厕偷拍高清| 伊人婷婷欧美激情| 日韩亚洲欧美成人一区| 国产做a爰片久久毛片| 中文字幕av不卡| 欧美伦理影视网| 国产一区二区91| 亚洲精品国产a| 欧美va亚洲va| 91麻豆蜜桃一区二区三区| 五月天网站亚洲| 欧美激情在线一区二区| 精品视频一区二区不卡| 国产精品一二三四区| 一区二区高清在线| 国产婷婷色一区二区三区在线| 在线观看日韩电影| 丁香桃色午夜亚洲一区二区三区| 亚洲电影视频在线| 日本一区二区三区高清不卡| 欧美一区日韩一区| 在线观看一区二区视频| 不卡av在线免费观看| 麻豆91在线观看| 日韩av中文在线观看| 一区在线中文字幕| 中文字幕巨乱亚洲| 中文字幕欧美激情一区| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美一区二区三区男人的天堂| 日本国产一区二区| 99re亚洲国产精品| 99精品欧美一区| 91麻豆国产在线观看| 99riav久久精品riav| jizzjizzjizz欧美| 91成人免费在线视频| 91官网在线免费观看| 欧美午夜在线一二页| 97aⅴ精品视频一二三区| 91美女在线观看| 欧美日韩一区国产| 欧美一区二区视频观看视频| 欧美不卡激情三级在线观看| 久久精品一区二区| 亚洲精品ww久久久久久p站| 夜夜爽夜夜爽精品视频| 婷婷综合在线观看| 极品少妇一区二区| 91同城在线观看| 欧美二区三区91| 欧美激情一区二区三区四区| 亚洲精选一二三| 久久国产夜色精品鲁鲁99| 国产成人午夜精品5599| 欧美在线免费观看视频| 2023国产精品| 亚洲成人av电影| 国产aⅴ综合色| 欧美精品123区| 中文一区一区三区高中清不卡| 日本亚洲电影天堂| 欧美性猛交一区二区三区精品| 久久综合久久综合久久综合| 亚洲成人综合网站| 成人性生交大片免费看中文网站| 欧美二区乱c少妇| 自拍偷拍国产亚洲| 成人av在线资源| 国产免费成人在线视频| 久久99热这里只有精品| 日韩欧美国产午夜精品| 亚洲大型综合色站| 欧美优质美女网站| 亚洲色图欧美在线| 色综合久久综合中文综合网| 日韩美女久久久| 99久久综合精品| 国产精品国产三级国产三级人妇 | 欧美日韩久久久一区| 国产日韩一级二级三级| 国产精品一区二区在线播放 | 午夜精品久久久久久不卡8050 | 亚洲成在线观看| 欧美亚洲国产一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 91精品综合久久久久久| 全部av―极品视觉盛宴亚洲| 91精品国产综合久久福利软件| 五月婷婷激情综合网| 日韩三级视频中文字幕| 国产麻豆9l精品三级站| **欧美大码日韩| 欧美三级资源在线| 毛片av一区二区| 中文字幕精品综合| 在线看日韩精品电影| 另类专区欧美蜜桃臀第一页| 成人欧美一区二区三区在线播放| 色哟哟在线观看一区二区三区| 天天操天天干天天综合网| 久久网站热最新地址| 播五月开心婷婷综合| 日韩中文字幕麻豆| 国产亚洲人成网站| 91精品国产高清一区二区三区 | 蜜臀av一区二区在线免费观看| 久久免费电影网| 欧美日韩国产首页在线观看| 成人午夜av电影| 毛片不卡一区二区| 午夜天堂影视香蕉久久| 国产精品污www在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩高清一区二区| 成人精品小蝌蚪| 韩国欧美一区二区| 欧美aaaaa成人免费观看视频| 亚洲婷婷综合久久一本伊一区| 国产人妖乱国产精品人妖| 精品日韩在线观看| 日韩一区二区在线免费观看| 777xxx欧美| 日韩欧美在线网站| 精品少妇一区二区三区日产乱码| 欧美日韩国产成人在线免费| 精品视频在线视频| 欧美日韩电影在线播放| 欧美福利电影网| 91精品视频网| wwwwxxxxx欧美| 国产精品入口麻豆原神| 国产精品久久久久久久浪潮网站| 亚洲天天做日日做天天谢日日欢| 国产精品久久毛片a| 国产精品久久午夜夜伦鲁鲁| 综合久久久久久久| 亚洲午夜精品久久久久久久久| 无码av免费一区二区三区试看| 美女被吸乳得到大胸91| 国产麻豆精品95视频| 97精品国产97久久久久久久久久久久| 91小视频在线| 欧美成人精精品一区二区频| 久久久久久久久蜜桃| 亚洲欧美日韩国产一区二区三区 | 欧美日韩日日骚| 久久夜色精品国产欧美乱极品| 中文字幕一区二区三区在线观看| 一区二区高清在线| 国产在线日韩欧美| 欧美日韩精品免费观看视频| 久久亚洲综合色| 日韩**一区毛片| 91伊人久久大香线蕉| 久久久五月婷婷| 免费不卡在线观看|