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

📄 t_connect.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. * *  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, fd, s, s2;	int	ret, pid;	struct sockaddr_in name;	int	namelen;	int	num;	int testno, testno2, result[20];	num = 1;	testno = 0;	memset((char *)result, 0, sizeof(result));	/* for setup: get normal socket */	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) {		goto testend;	}	memset((char *)&name, 0, sizeof(name));	name.sin_family = AF_INET;	name.sin_port = htons(SUN_PORT -1);	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	namelen = sizeof(name);	/* Test 1 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 1;	ret = unix_connect(-1, (struct sockaddr *)&name, namelen);	if (ret < 0) {		printf("OK! :connect(-1, name, namelen), EBADF, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail :connect(-1, name, namelen), EBADF, errno = %d\n",errno);		result[testno] = 1;	}	/* Test 2 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 2;	ret = unix_connect(10, (struct sockaddr *)&name, namelen);	if (ret < 0) {		printf("OK! :connect(10, name, namelen), EBADF, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail :connect(10, name, namelen), EBADF, errno = %d\n",errno);		result[testno] = 1;	}	/* Test 3 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 3;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret < 0) {		printf("OK! :connect(s, name(port-1), namelen), ECONNREFUSED, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail :connect(s, name(port-1), namelen), ECONNREFUSED, errno = %d\n",errno);		result[testno] = 1;	}	unix_shutdown(s, SHUT_RDWR);	unix_close(s);	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) {		printf("socket fail! \n");		goto testend;	}	/* Test 4 */    printf("Connect Test %d: \n",num++);	name.sin_addr.s_addr = inet_addr(BAD_ADDR);	name.sin_port = htons(SUN_PORT);	errno = 0;testno = 4;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret < 0) {		printf("OK! :connect(s, name(bad dst addr), namelen), ENETUNREACH, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail :connect(s, name(bad dst addr), namelen), ENETUNREACH, errno = %d\n",errno);		result[testno] = 1;	}	/* Test 5 */    printf("Connect Test %d: \n",num++);	errno = 0;	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	name.sin_port = htons(SUN_PORT);testno = 5;#if 0	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret == 0) { 		printf("OK! :connect(s,&name,namelen),ret = %d \n",ret);		result[testno] = 0;	}	else {		printf("Fail! :connect(s,&name,namelen),ret = %d, errno = %d\n",ret, errno);		result[testno] = 1;	}	errno = 0;testno = 6;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret < 0 && (errno == EISCONN)) {		printf("OK! :connect(s(already connected),name,namelen),EISCONN errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s(already connected),name,namelen),EISCONN errno = %d \n",errno);		result[testno] = 1;	}	unix_shutdown(s, SHUT_RDWR);	unix_close(s);#endif	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_STREAM, 0)) < 0) {		printf("socket(AF_INET,SOCK_STREAM,0) fail \n");		goto testend;	}	/* Test 6 */    printf("Connect Test %d: \n",num++);	errno = 0;	memset((char *)&name, 0, sizeof(name));	name.sin_family = AF_INET;	name.sin_port = htons(SUN_PORT);	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	namelen = sizeof(name);testno = 7;	ret = unix_connect(s, (struct sockaddr *)NULL, namelen);	if (ret < 0) {		printf("OK! :connect(s,NULL,namelen),EFAULT errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s,NULL,namelen),EFAULT errno = %d \n",errno);		result[testno] = 1;	}	/* Test 7 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 8;	ret = unix_connect(s, (struct sockaddr *)-1, namelen);	if (ret < 0) {		printf("OK! :connect(s,-1,namelen),EFAULT errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s,-1,namelen),EFAULT errno = %d \n",errno);		result[testno] = 1;	}	/* Test 8 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 9;	ret = unix_connect(s, (struct sockaddr *)&name, 0);	if (ret < 0) {		printf("OK! :connect(s,name,0),EINVAL errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s,name,0),EINVAL errno = %d \n",errno);		result[testno] = 1;	}	/* Test 9 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 10;	ret = unix_connect(s, (struct sockaddr *)&name, -1);	if (ret < 0) {		printf("OK! :connect(s,name,-1),EINVAL errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s,name,-1),EINVAL errno = %d \n",errno);		result[testno] = 1;	}#if 0	/* Test 10 */    printf("Connect Test %d: \n",num++);	errno = 0;	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	name.sin_port = htons(SUN_PORT +1);testno = 11;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret < 0) {		printf("OK! :connect(s(no accept), name, namelen1),ETIMEDOUT,errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :connect(s(no accpet), name, namelen1),ETIMEDOUT,errno = %d \n",errno);		result[testno] = 1;	}	unix_shutdown(s, SHUT_RDWR);	unix_close(s);#endif	/***** Datagram Socket *****/	/* Test 11 */    printf("Connect Test %d: \n",num++);	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) {		goto testend;	}	errno = 0;	memset((char *)&name, 0, sizeof(name));	name.sin_family = AF_INET;	name.sin_port = htons(SUN_PORT +2);	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	namelen = sizeof(name);testno = 12;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret == 0) {		printf("OK! :DGRAM: no error check. connect(s(port 1)) ret = %d\n", ret);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: no error check. connect(s(port 1)) ret = %d\n", ret);		result[testno] = 1;	}	unix_close(s);	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) {		printf("socket(AF_INET,SOCK_DGRAM,0) fail\n");		goto testend;	}	/* Test 12 */    printf("Connect Test %d: \n",num++);	errno = 0;	name.sin_addr.s_addr = inet_addr(BAD_ADDR);	name.sin_port = htons(SUN_PORT +2);	namelen = sizeof(name);testno = 13;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret == 0) {		printf("OK! :DGRAM: no error check. connect(s, name(in bad addr), namelen) ret = %d\n", ret);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: no error check. connect(s, name(in bad addr), namelen) ret = %d\n", ret);		result[testno] = 1;	}	/* Test 13 */    printf("Connect Test %d: \n",num++);	errno = 0;	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	name.sin_port = htons(SUN_PORT +2);testno = 14;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret == 0) {		printf("OK! :DGRAM: normal case. connect(s,name,namelen),ret = %d \n",ret);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: normal case. connect(s,name,namelen),ret = %d \n",ret);		result[testno] = 1;	}	errno = 0;testno = 15;	ret = unix_connect(s, (struct sockaddr *)&name, namelen);	if (ret == 0) {		printf("OK! :DGRAM: no error check. connect(s(already connected),name,namelen),ret = %d \n",ret);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: no error check. connect(s(already connected),name,namelen),ret = %d \n",ret);		result[testno] = 1;	}	unix_close(s);	errno = 0;	if ((s = unix_socket(AF_INET, SOCK_DGRAM, 0)) < 0) {		printf("socket(AF_INET,SOCK_DGRAM,0) fail\n");		goto testend;	}	/* Test 14 */    printf("Connect Test %d: \n",num++);	errno = 0;	memset((char *)&name, 0, sizeof(name));	name.sin_family = AF_INET;	name.sin_port = htons(SUN_PORT);	name.sin_addr.s_addr = inet_addr(SUN_ADDR);	namelen = sizeof(name);testno = 16;	ret = unix_connect(s, (struct sockaddr *)NULL, namelen);	if (ret < 0) {		printf("OK! :DGRAM: connect(s, NULL, namelen), EFAULT, errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: connect(s, NULL, namelen), EFAULT, errno = %d \n",errno);		result[testno] = 1;	}	/* Test 15 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 17;	ret = unix_connect(s, (struct sockaddr *)-1, namelen);	if (ret < 0) {		printf("OK! :DGRAM: connect(s, -1, namelen), EFAULT, errno = %d \n",errno);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: connect(s, -1, namelen), EFAULT, errno = %d \n",errno);		result[testno] = 1;	}	/* Test 16 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 18;	ret = unix_connect(s, (struct sockaddr *)&name, 0);	if (ret < 0) {		printf("OK! :DGRAM: connect(s, name, 0), EINVAL, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: connect(s, name, 0), EINVAL, errno = %d\n",errno);		result[testno] = 1;	}	/* Test 17 */    printf("Connect Test %d: \n",num++);	errno = 0;testno = 19;	ret = unix_connect(s, (struct sockaddr *)&name, -1);	if (ret < 0) {		printf("OK! :DGRAM: connect(s, name, -1),EINVAL, errno = %d\n",errno);		result[testno] = 0;	}	else {		printf("Fail! :DGRAM: connect(s, name, -1),EINVAL, errno = %d\n",errno);		result[testno] = 1;	}	unix_close(s);#if defined(T_KERNEL)	tk_slp_tsk(2000);#endiftestend:	/* check the results */	testno2 = 19;	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 + -