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

📄 sockcmd.c

📁 uCLinux下的一个TCP/IP协议栈源码
💻 C
字号:
/* Socket status display code
 */
#include <stdio.h>
#include "global.h"
#include "mbuf.h"
#include "proc.h"
#include "lzw.h"
#include "usock.h"
#include "socket.h"
#include "commands.h"

/* Socket status display command */
int
dosock(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct usock *up;
	int s,i,n;
	struct sockaddr fsock;
	struct socklink *sp;
	char *cp;

	if(argc < 2){
		printf("S#   Type    PCB       Remote socket         Owner\n");
		for(n=0;n<Nsock;n++){
			s = _mk_fd(n,_FL_SOCK);
			up = itop(s);
			if(up == NULL)
				continue;

			i = sizeof(fsock);
			if(getpeername(s,&fsock,&i) == 0 && i != 0)
				cp = psocket(&fsock);
			else
				cp = "";

			printf("%4d %-8s%-9p %-22s%-9p %-10s\n",
			 s,Socktypes[up->type],up->cb.p,cp,
			 up->owner,up->owner->name);
		}
		return 0;
	}
	s = atoi(argv[1]);
	if(_fd_type(s) != _FL_SOCK){
		printf("Not a valid socket\n");
		return 1;
	}
	up = itop(s);
	if(up == NULL){
		printf("Socket not in use\n");
		return 1;
	}
	sp = up->sp;
	printf("%s %p\n",Socktypes[up->type],up->cb.p);
	if(up->cb.p == NULL)
		return 0;
	if(sp->status != NULL)
		(*sp->status)(up);
	return 0;	
}

⌨️ 快捷键说明

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