示例#1
0
int 
cmd_socket(char *argv[], int argc)
{
	int sock_type, proto;
	int sd;
	char *tof;
	
	proto = IPPROTO_TCP;
	sock_type = SOCK_STREAM;
	tof = "tcp";
	if (argc > 0) {
		if (strcmp(argv[0], "sctp") == 0) {
			proto = IPPROTO_SCTP;
			sock_type = SOCK_SEQPACKET;
			tof = "sctp";
		} else 	if (strcmp(argv[0], "udp") == 0) {
			proto = IPPROTO_UDP;
			sock_type = SOCK_DGRAM;
			tof = "udp";
		} else if (strcmp(argv[0], "tcp") == 0) {
			proto = IPPROTO_TCP;
			sock_type = SOCK_STREAM;
		} else {
			printf("Unknown socket type not tcp or sctp or udp\n");
			return(0);
		}

	}
	sd = socket(AF_INET, sock_type, proto);
	printf("fd is %d\n", sd);
	register_sd(sd, tof);
}
示例#2
0
void FatFS_class::begin(SPIClass &spi, int csline)
{
    s_spi=&spi;
    s_csline=csline;
    digitalWrite(csline,HIGH);
    pinMode(csline,OUTPUT);
    spi.setDataMode(SPI_MODE3);
    spi.setClockDivider(SPI_CLOCK_DIV4);
    register_sd();
}
示例#3
0
int 
cmd_accept(char *argv[], int argc)
{
	struct socket_reg *reg;
	int sd, newsd, ret, backlog=10;
	struct sockaddr_in sin;
	socklen_t slen;
	char from[64];

	if (argc < 1) {
		printf("Need to specify a sd to accept on\n");
		return(0);
	}
	sd = strtol(argv[0], NULL, 0);
	reg = get_reg(sd);
	if (reg == NULL) {
		printf("Can't find sd:%d in registry\n", sd);
		return(0);
	}
	slen = sizeof(struct sockaddr_in);
	newsd = accept(sd, (struct sockaddr *)&sin, &slen);
	if (newsd == -1) {
		printf("accept error %d\n", errno);
		return(0);
	}
	inet_ntop(sin.sin_family, &sin.sin_addr, from, sizeof(from));
	printf("Accept gets a new connection to sd:%d from %s:%d\n",
	       newsd, from, ntohs(sin.sin_port));
	register_sd(newsd, reg->type);
	reg = get_reg(newsd);
	if(reg == NULL) {
		printf("Can't find registry?\n");
		return(0);
	}
	reg->flags |= SOCK_ACCEPT;
	return(0);
}