完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
在C6748上使用C:tindk_2_23_02_03packagestindktoolsconsoleconecho.c 中函数EchoTcp来连接服务端发送数据,函数代码如下:
/*---------------------------------------------------------------------- */ /* EchoTcp() */ /* Test ECHO with a TCP socket */ /*---------------------------------------------------------------------- */ static void EchoTcp( IPN IPAddr ) [ SOCKET s; struct sockaddr_in sin1; int test,i; char *pBuf = 0; struct timeval timeout; ConPrintf("n== Start TCP Echo Client Test ==n"); /* Create test socket */ s = socket(AF_INET, SOCK_STREAMNC, IPPROTO_TCP); if( s == INVALID_SOCKET ) [ ConPrintf("failed socket create (%d)n",fdError()); goto leave; ] /* Prepare address for connect */ bzero( &sin1, sizeof(struct sockaddr_in) ); sin1.sin_family = AF_INET; sin1.sin_len = sizeof( sin1 ); sin1.sin_addr.s_addr = IPAddr; sin1.sin_port = htons(7); /* Configure our timeout to be 5 seconds */ timeout.tv_sec = 5; timeout.tv_usec = 0; setsockopt( s, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof( timeout ) ); setsockopt( s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof( timeout ) ); /* Connect socket */ if ( connect( s, (PSA) &sin1, sizeof(sin1) ) < 0 ) [ ConPrintf("failed connect (%d)n",fdError()); goto leave; ] /* Allocate a working buffer */ if( !(pBuf = mmBulkAlloc( 12288 )) ) [ ConPrintf("failed temp buffer allocationn"); goto leave; ] /* Start Test */ for( test=48; test<=12288; test*=2 ) [ /* Fill buffer with a test pattern */ for(i=0; i /* Send the buffer */ ConPrintf("Sending %d bytes ... ",test); if( send( s, pBuf, test, 0 ) < 0 ) [ ConPrintf("send failed (%d)n",fdError()); break; ] /* Clear the test pattern */ mmZeroInit( pBuf, (uint)test ); /* Try and receive the test pattern back */ ConPrintf("receive ... "); i = recv( s, pBuf, test, MSG_WAITALL ); if( i < 0 ) [ ConPrintf("recv failed (%d)n",fdError()); break; ] /* Verify reception size */ if( i != test ) [ ConPrintf("received %d (not %d) bytesn",i,test); break; ] /* Verify the test pattern */ ConPrintf("verify ... "); for(i=0; i [ ConPrintf("verify failed at byte %dn",i); break; ] if( i==test ) ConPrintf("passedn"); ] leave: if( pBuf ) mmBulkFree( pBuf ); if( s != INVALID_SOCKET ) fdClose( s ); ConPrintf("== End TCP Echo Client Test ==nn"); ] 多次运行上述程序进行客户端(开发板)连接服务端(PC端)并发送数据,发现以下现象: 1 客户端使用的端口号一直是57384,可以通过设置来实现客户端端口号是随机变化的吗? 这个现象我用windows上vc环境的socket编程做过测试,其多次运行客户端实际使用的端口都是变化的,打印信息如下: 【Receive from 192.168.2.100 : 2713】:hello 0 【Receive from 192.168.2.100 : 2736】:hello 0 【Receive from 192.168.2.100 : 2742】:hello 0 【Receive from 192.168.2.100 : 2744】:hello 1 【Receive from 192.168.2.100 : 2745】:hello 2 2 EchoTcp函数在执行connect操作时,大部分情况下会出现几秒的停顿与延时才能完成连接,请问这个和上面描述的客户端端口号固定不变有联系吗? 测试环境的服务器使用的是网络调试助手工具,服务端一旦listen后就没有再做其他任何操作; if ( connect( s, (PSA) &sin1, sizeof(sin1) ) < 0 ) [ ConPrintf("failed connect (%d)n",fdError()); goto leave; ] |
|
相关推荐
3个回答
|
|
|
如果没有用bind函数绑定端口号的话,会随机给客户端分配端口号。
|
|
|
|
|
|
Shine Zhang 你好,现在还是同样的现象: 1 每次连接端口号都是同样的,57345; 2 程序执行到connect时,该函数需要大概5到10秒才能连接上; 我看了NSP内client demo程序,这些都是在板上建立tcp server,然后由pc端发起连接与数据收发验证 hEcho = DaemonNew( SOCK_STREAMNC, 0, 7, dtask_tcp_echo,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 ); hEchoUdp = DaemonNew( SOCK_DGRAM, 0, 7, dtask_udp_echo,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 1 ); hData = DaemonNew( SOCK_STREAM, 0, 1000, dtask_tcp_datasrv,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 ); hNull = DaemonNew( SOCK_STREAMNC, 0, 1001, dtask_tcp_nullsrv,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 ); hOob = DaemonNew( SOCK_STREAMNC, 0, 999, dtask_tcp_oobsrv,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 ); 有没有在板上作为TCP 客户端的例程,我看了C:tindk_2_23_02_03packagestindktoolsconsoleconsole.c内SOCKET ConsoleOpen( PSA pClient )似乎符合要求,请问怎么调用它作为测试任务? |
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:55 , Processed in 0.709510 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3558