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

📄 t_udp_srv9.c

📁 T-kernel Tcp/ip Protocol Stack Sample
💻 C
字号:
/* *  Copyright (C) 1999-2003 MITSUBISHI ELECTRIC CORPORATION and *  RENESAS SOLUTIONS CORPORATION and *  RENESAS TECHNOLOGY CORPORATION *  All rights reserved. * *  BSD socket communication test program used for TCP/IP subsystem. */#include <tk/tkernel.h>#include <renesas_tcpip.h>#include <renesas_tcpip_common.h>#include "config.h"static int comm_size[] = {	1, 2, 4, 10, 16, 30, 32, 50, 64, 100, 128, 200, 256, 500, 512,	1000, 1024, 1472, 2000, 2048, 4000, 4096, 8000};#define SERVER	1#define CLIENT	1/* UDP server test () */voidtest_task(int stacd, void *exinf){        	int i, j, k, sd, newsd, len, size, total;	char ch, buf[SIZE3];	struct sockaddr_in sinme, sindst;	int addrlen;	int stepno;	int testno, testno2, result[31];	testno = 0;	testno2 = sizeof(comm_size)/sizeof(comm_size[0]);	memset((char *)result, 0, sizeof(result));	size = SIZE3;	ch = 'a';stepno = 1;	if ((sd = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) {		goto err;	}stepno = 2;	memset((char *)&sinme, 0, sizeof(struct sockaddr_in));	sinme.sin_family = AF_INET;	sinme.sin_addr.s_addr = inet_addr(IFRA_ADDR);	sinme.sin_port = htons(LOCALPORT);	if (unix_bind(sd, (struct sockaddr *)&sinme, sizeof(sinme)) < 0) {		unix_close(sd);		goto err;	}for (testno=1; testno <= sizeof(comm_size)/sizeof(comm_size[0]); testno++) {	size = comm_size[testno -1];	for (j=1; j >= 1; j++) {#ifdef SERVER		total = 0;		while (total < size) {			memset(buf, 0, sizeof(buf));			memset((char *)&sindst, 0, sizeof(struct sockaddr_in));			addrlen = 0;stepno = 3;			if ((len = unix_recvfrom(sd, buf, size, 0,					(struct sockaddr *)&sindst, &addrlen)) < 0) {				unix_close(sd);#if defined(PRINTF_ON)				printf("recvfrom is NG.(len=%d)\n", len);#endif				break;			}#if defined(PRINTF_ON)			printf("recvfrom is OK.(len=%d)\n", len);#endif			if (len == 0) {				break;			}			total += len;			/* check data contents */			for (i=0; i < len; i++) {				if (buf[i] != ch) {					break;				}			}			if (i < len) {stepno = 4;				unix_close(sd);				goto err;			}		}		if (total == 0) {stepno = 7;			break;		}		if (total != size) {stepno = 5;			unix_close(sd);			break;		}#endif /* SERVER */#ifdef CLIENT		memset(buf, ch, size);		memset((char *)&sindst, 0, sizeof(struct sockaddr_in));		sindst.sin_family = AF_INET;		sindst.sin_addr.s_addr = inet_addr(DST_IPADDR);		sindst.sin_port = htons(DST_PORTNO);stepno = 6;		if ((len = unix_sendto(sd, buf, size, 0,			(struct sockaddr *)&sindst, sizeof(sindst))) < 0) {			unix_close(sd);#if defined(PRINTF_ON)			printf("sendto is NG.(len=%d)\n", len);#endif			break;		}#if defined(PRINTF_ON)		printf("sendto is OK.(len=%d)\n", len);#endif#endif /* CLIENT */	} /* for */err:	if (stepno == 7) {#if defined(PRINTF_ON)		printf("Pass. (size=%d)\n", size);#endif		result[testno] = 0;	}	else {#if defined(PRINTF_ON)		printf("Error at stepno-%d.\n", stepno);#endif		result[testno] = 1;		break;	}} /* for */stepno = 8;	unix_close(sd);#if defined(T_KERNEL)	tk_slp_tsk(1000);#endif	for (i=1; i <= testno; i++) {		if (result[i] == 1)			break;	}#if defined(PRINTF_ON)	if (i > testno2)		printf("All of Pass.\n");	else		printf("Error at testno-%d.\n", i);#endif#if defined(T_KERNEL)	tk_slp_tsk(TMO_FEVR);#endif}/* EOF */

⌨️ 快捷键说明

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