|  | 
 
| /****************************************************************************/ /*                                                                          */
 /*              NDK TCP 通信                                                */
 /*                                                                          */
 /*              2014年09月22日                                              */
 /*                                                                          */
 /****************************************************************************/
 /* 添加 BIOS 组件 */
 var Bios = xdc.useModule('ti.sysbios.BIOS');
 /****************************************************************************/
 /*                                                                          */
 /*              内存配置                                                    */
 /*                                                                          */
 /****************************************************************************/
 /* 添加内存管理组件 */
 var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
 var Memory = xdc.useModule('xdc.runtime.Memory');
 var Mmu = xdc.useModule('ti.sysbios.family.c64p.Cache');
 /* 创建一个 名为 "systemHeap" 的 HeapMem */
 var systemHeapParams = new HeapMem.Params;
 systemHeapParams.size = 16 * 1024 *1024;
 var systemHeap = HeapMem.create(systemHeapParams);
 /* 设置 "systemHeap" 作为默认 Heap */
 Memory.defaultHeapInstance = systemHeap;
 /* 段分配 */
 Program.sectMap["HTML"] = "DDR";
 /****************************************************************************/
 /*                                                                          */
 /*              NDK 配置                                                    */
 /*                                                                          */
 /****************************************************************************/
 var Global = xdc.useModule('ti.ndk.config.Global');
 /* 指定服务器守护线程钩子函数 */
 Global.networkOpenHook = '&AppOpenHook';
 Global.networkCloseHook = '&AppCloseHook';
 Global.networkIPAddrHook = '&NetGetIPAddr';
 var Ip = xdc.useModule('ti.ndk.config.Ip');
 var Tcp = xdc.useModule('ti.ndk.config.Tcp');
 /****************************************************************************/
 /*                                                                          */
 /*              EMAC 配置                                                   */
 /*                                                                          */
 /****************************************************************************/
 // 使用 OMAPL138 EMAC 驱动
 xdc.useModule('ti.drv.omapl138.Emac');
 /****************************************************************************/
 /*                                                                          */
 /*              启动配置                                                    */
 /*                                                                          */
 /****************************************************************************/
 /* 启动时调用初始化函数 */
 Bios.startupFxns = ['&CacheInit'];
 Program.stack = 8192;
 Memory.defaultHeapSize = 8192;
 Program.heap = 1024;
 Mmu.initSize.l1pSize = Mmu.L1Size_32K;
 Mmu.initSize.l2Size = Mmu.L2Size_256K;
 Ip.socketBufMinRxSize = 2048;
 /***********************************************************************************************************/
 TCP.c 文件
 // NDK
 #include <netmain.h>
 // C 语言函数库
 #include <stdio.h>
 #include <console.h>
 #include "TCP.h"
 char *IPStr = "192.168.1.3";
 unsigned int Port = 1025;
 SOCKET  listening_socket;
 SOCKET  new_connected_socket;
 struct sockaddr_in local_ipv4_address;
 struct sockaddr_in peer_ipv4_address;
 void TcpTask(void)
 {
 IPN IPAddr;
 int optval;
 int peer_ipv4_address_length;
 int backlog = 3;
 if(!ConStrToIPN(IPStr, &IPAddr))
 printf("Invalid address\n\n");
 // IP 地址
 mmZeroInit(&local_ipv4_address, sizeof(struct sockaddr_in));
 local_ipv4_address.sin_family = AF_INET;
 local_ipv4_address.sin_port = htons(Port);
 local_ipv4_address.sin_addr.s_addr = IPAddr;
 listening_socket = socket(AF_INET, SOCK_STREAMNC, IPPROTO_TCP);
 if(listening_socket == INVALID_SOCKET)
 {
 printf("failed socket create (%d)\n", fdError());
 }
 setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
 if (bind(listening_socket, (struct sockaddr *) &local_ipv4_address, sizeof(local_ipv4_address)) < 0)
 {
 printf("Bind to %s:%d failed: %s\n", IPStr, Port, fdError());
 exit(1);
 }
 printf("Bind is Ok!\n");
 if (listen(listening_socket, backlog) < 0)
 {
 printf("Listen on %s:%d failed: %s\n", IPStr, Port,fdError());
 fdClose(listening_socket);
 exit(1);
 }
 printf("Listen is Ok!\n");
 for(;;)
 {
 optval ++;
 peer_ipv4_address_length = sizeof(peer_ipv4_address);
 new_connected_socket = accept(listening_socket, (PSA)&peer_ipv4_address, &peer_ipv4_address_length);
 if((int)new_connected_socket < 0)
 {
 if (fdError() == EINTR)
 {
 continue;
 }
 else
 {
 printf("Accept new connection on socket %d failed: %s\n", listening_socket, fdError());
 break;
 }
 }
 else
 {
 char peer_ipv4_address_string[] = "ddd.ddd.ddd.ddd";
 // TODO: implement blacklist/whitelist to permit/deny request.
 //const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
 inet_ntop(AF_INET, &peer_ipv4_address.sin_addr, peer_ipv4_address_string, sizeof(peer_ipv4_address_string));
 printf("Accepted a new connection %d from %s:%d.\n", new_connected_socket, peer_ipv4_address_string, ntohs(peer_ipv4_address.sin_port));
 // step 5, r/w on new_connected_socket
 char message[] = "It works!";
 int n;
 //ssize_t send(int s, const void *buf, size_t len, int flags);
 if ((n = send(new_connected_socket, message, strlen(message), 0)) < 0)
 {
 printf("Send data to client failed: %s\n", fdError());
 }
 else
 {
 printf("Sent %d bytes to client successfully.\n", n);
 }
 //--------------------------------------------------------------
 // step 6, close new_connected_socket
 //--------------------------------------------------------------
 fdClose(new_connected_socket);
 }
 }
 //------------------------------------------------------------------
 // final, close listeninng_socket
 //------------------------------------------------------------------
 fdClose(listening_socket);
 }
 上面是app.cfg和tcp.c文件
 程序老是在accept这里跑飞,当我注释掉bind,listen函数,accept就不会跑飞,不知道哪里出问题了,希望有人指导下,公司就我自己软件,没有人求助,希望遇到大神
 
 | 
 |