📄 t_sendto.c
字号:
/* * Copyright (C) 1999-2003 MITSUBISHI ELECTRIC CORPORATION and * RENESAS SOLUTIONS CORPORATION and * RENESAS TECHNOLOGY CORPORATION * All rights reserved. * * TCP/IP Test Application program [API]. */#include <tk/tkernel.h>#include <renesas_tcpip.h>#include <renesas_tcpip_common.h>#include "config.h"voidtest_task(int stacd, void *exinf){ int i, s, s2, ret; int len, flags; struct sockaddr_in name, addr; int namelen; char buf[2048]; int num, nonblock, tcpopt; int testno, testno2, result[7]; num = 1; nonblock = 1; testno = 0; memset((char *)result, 0, sizeof(result)); /* for setup: get normal socket */ errno = 0; if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) { printf("socket(AF_INET,SOCK_DGRAM,0) fail errno=%d\n",errno); goto testend; } /* Test 1 */ printf("Sendto Test %d: \n",num++); name.sin_family = AF_INET; name.sin_port = htons(SUN_PORT); name.sin_addr.s_addr = inet_addr(SUN_ADDR); namelen = sizeof(name); errno = 0;testno = 1; ret = unix_sendto(-1, buf, sizeof(buf), 0, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :sendto(-1, buf, 1024*2,0, name, namelen), EBADF,errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :sendto(-1, buf, 1024*2,0, name, namelen), EBADF,errno = %d\n",errno); result[testno] = 1; } /* Test 2 */ printf("Sendto Test %d: \n",num++); errno = 0;testno = 2; ret = unix_sendto(10, buf, sizeof(buf), 0, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :sendto(10, buf, 1024, 0, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :sendto(10, buf, 1024, 0, name, namelen), EBADF, errno = %d\n",errno); result[testno] = 1; } /* Test 3 */ printf("Sendto Test %d: \n",num++); errno = 0;testno = 3; ret = unix_sendto(s, (char *)NULL, sizeof(buf), 0, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :sendto(s, NULL, 2048, 0, name, namelen), EFAULT, errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :sendto(s, NULL, 2048, 0, name, namelen), EFAULT, errno = %d\n",errno); result[testno] = 1; } /* Test 4 */ printf("Sendto Test %d: \n",num++); errno = 0;testno = 4; ret = unix_sendto(s, (char *)-1, sizeof(buf), 0, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :sendto(s, -1, 2048, 0, name, namelen), EFAULT,errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :sendto(s, -1, 2048, 0, name, namelen), EFAULT,errno = %d\n",errno); result[testno] = 1; } /* Test 5 */ printf("Sendto Test %d: \n",num++); errno = 0;testno = 5; ret = unix_sendto(s, buf, -1, 0, (struct sockaddr *)&name, namelen); if (ret < 0) { printf("OK! :sendto(s, -1, 0, &name, namelen), EINVAL,errno = %d\n",errno); result[testno] = 0; } else { printf("Fail! :sendto(s, -1, 0, &name, namelen), EINVAL,errno = %d\n",errno); result[testno] = 1; } /* Test 6 */ printf("Sendto Test %d: \n",num++); errno = 0; nonblock = 1; ret = unix_ioctl(s, FIONBIO, (VP)&nonblock); if (ret < 0) { printf("ioctl(s, FIONBIO, (VP)&nonblock) fail errno=%d\n",errno); unix_close(s); goto testend; }testno = 6; for (i=0; i < 10; i++) { errno = 0; ret = unix_sendto(s, buf, sizeof(buf), 0, (struct sockaddr *)&name ,namelen); if (ret < 0) { result[testno] = 1; break; } printf("send data size %d\n",ret); } ret = unix_sendto(s, buf, 0, 0, (struct sockaddr *)&name ,namelen); if (ret < 0) { result[testno] = 1; } unix_close(s);#if defined(T_KERNEL) tk_slp_tsk(2000);#endiftestend: /* check the results */ testno2 = 6; for (i=1; i <= testno; i++) { if (result[i] == 1) break; } if (i > testno2) printf("Pass.\n"); else printf("Error.\n");#if defined(T_KERNEL) tk_slp_tsk(TMO_FEVR);#endif}/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -