📄 t_udp_srv9.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 + -