各位大神,各位TI工程师好!
我在开发我公司的C6678板卡的网络遇到这样的问题,我参考的NDK里的Client例程弄的,目前TCP协议都通信传输数据正常。现在我要实现DSP采用UDP协议主动往指定IP地址和端口号的PC机发数据的功能,因为要主动发送,我采用的是老的TaskCreate创建任务线程方式。在该任务里主动发送发现Sendto函数返回值也正确,但就是PC机上的网络调试助手收不到数据?以下是我的代码,看下是否有问题:
- SOCKET socClient = socket(AF_INET, SOCK_DGRAM, 0);
- SOCKADDR_IN addrSrv; // a instance of SOCKADDR_IN, which is used in format of SOCKADDR.
- addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.10.119"); //set the host IP
- addrSrv.sin_family=AF_INET; //set the protocol family
- addrSrv.sin_port=htons(HOST_PORT); //set the port number
- // array to store the data that server feedback.
- char cRecvBuf[100];
- //while
- while(true){
- sendto(socClient, cRecvBuf, 100, 0, (SOCKADDR*) &addrSrv, sizeof(SOCKADDR));
- }
user3604554:
回复 Shine:
Shine Zhang
你好!
我今天按照你给的链接里的4544.udpHello.c中的函数进行了测试,发现还是上位机还是接收不到数据!我在
sendto(socksend, buff1, buff_size1, 0, (struct sockaddr *)&cliAddr, sa_size1);函数前面加上
i = (int)recvncfrom( s, (void **)&pBuf, 0, (PSA)&sinData, &tmp, &hBuffer );函数后,PC机先主动发送下来,recvncfrom函数能接收到,在然后运行sendto函数发送给PC机,这时PC机才能接收到!请问还有什么地方没设置对造成的吗?
user3604554:
回复 user3604554:
今天我按照那个函数里面的把没加的TASKSleep函数就可以,原来是这样,这里TASKSleep函数应该是让软件整个系统都运行起来,才可以发送UDP数据吧!