kb_net.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:6k
源码类别:

DVD

开发平台:

C/C++

  1. //*****************************************************************************
  2. //文件名:kb_net.c
  3. //
  4. //描     述 :网口处理
  5. //
  6. //作     者:韩彦锋
  7. //
  8. //日     期: 2006.12.25
  9. //
  10. //版     本: v1.0
  11. //*****************************************************************************
  12. #include "kb_net.h"
  13. #include "osp.h"
  14. #include "tcpip.h"
  15. #include "kb_dc.h"
  16. #include "kb_machblue_client_vote.h"
  17. static void kb_NETTask(void);
  18. //////////////投票系统所需的函数//////////////
  19. extern BOOL kb_vote_info_send(kb_vote_t *pVote);
  20. extern BOOL kb_vote_result_get(unsigned char *pName,kb_vote_info_t * kb_voteResult);
  21. ///////////////////////////////////////////////////////
  22. //*****************************************************************************
  23. //名称:KB_NETInit
  24. //
  25. //功能:初始化网口模块
  26. //
  27. //输入:无
  28. //
  29. //返回:RETOK 成功
  30. //        others 失败
  31. //*****************************************************************************
  32. INT32 KB_NETInit(void)
  33. {    
  34. UINT8 hwMac[6]={'18','11','22','33','44','55'};
  35. unsigned int ip,mask,gw;
  36. int rel;
  37. UINT32 _netQueueID;
  38. UINT32 _netTaskID;
  39. int tmp,addr=0x41000000;
  40. ip=0xC0A80918;
  41. mask=0xFFFFFF00;
  42. gw=0xC0A80905;
  43. rel=netif_init(ip,mask,gw,hwMac);
  44. if(rel!=1)
  45. {
  46. return RETFIAL1;
  47. }
  48.     
  49. //create task
  50.      KB_OSPQueInit("NET", 128, &_netQueueID);
  51.      KB_RegQueID(_netQueueID);
  52.      KB_OSPTaskInit("NET",1024 * 128,(void (*)(void*))kb_NETTask,MENU_PRIORITY,NULL,&_netTaskID);
  53.      return RETOK;
  54. }
  55. //*****************************************************************************
  56. //名称:kb_NETTask
  57. //
  58. //功能:网络任务处理
  59. //
  60. //输入:无
  61. //
  62. //返回:无
  63. //*****************************************************************************
  64. static void kb_NETTask(void)
  65. {
  66. struct sockaddr_in tcpc_a,tcpc_address;
  67. char data[2000];
  68. int len, i=0,  j=0 ,tmp;
  69. int str[500];
  70. char *p;
  71. int _socket;
  72. struct sockaddr name;
  73.  int  namelen;
  74.   
  75. while(getip()==0)
  76. task_delay(ST_GetClocksPerSecond()*1);
  77. }
  78. /*
  79.  *Send note infomation to server
  80.  
  81.  *pVote <vote information>
  82.  *@return None
  83.  */
  84. BOOL kb_vote_info_send(kb_vote_t *pVote)
  85. {
  86. int tmp;
  87. char buf;
  88. int _socket;
  89.       struct sockaddr_in tcpc_address;
  90.        kb_vote_t kb_vote;
  91.    _socket = socket(AF_INET,SOCK_STREAM,0);/* create _socket */ 
  92. //printf("n [kb_vote_info_send]:_socket()-0= %d    n",_socket);
  93. if(_socket<0)
  94. return FALSE;
  95.        tcpc_address.sin_family=AF_INET;//以太网协议//PF_INET 广域网协议(暂时还用不到)       
  96. tcpc_address.sin_port=htons(6000);
  97. tcpc_address.sin_addr.s_addr=0xc0a809fd;//0xC0A80905;//192.168.0.100;//inet_addr(srvr_addr);  
  98. tmp = connect(_socket, (struct sockaddr *)&tcpc_address, sizeof(struct sockaddr_in));
  99. printf("n [kb_vote_info_send]:connect--------tmp=%d",tmp);
  100. if(tmp!=0)
  101. {
  102. return FALSE;
  103. }
  104.       kb_vote.index=pVote->index;
  105.       kb_vote.ip=getip();
  106.       strcpy(kb_vote.name, pVote->name);
  107. kb_vote.count = pVote->count;
  108. printf("n [kb_vote_info_send]:kb_vote.count--------=%d",kb_vote.count);
  109.   tmp=send(_socket, &kb_vote, sizeof(kb_vote), 0);
  110.        if(tmp!=sizeof(kb_vote))
  111. return FALSE;
  112.       tmp=recv(_socket,&buf,sizeof(char), 0);
  113.        //printf("n [kb_vote_info_send]:[confirm message after vote]recv------tmp=%d,buf=%d",tmp,buf);
  114.        if(tmp==1)
  115.     return TRUE;
  116. else
  117. return FALSE;
  118. }
  119. /*
  120.  *Get vote result from server
  121.  *pName <name of vote movie>
  122.  *@return None
  123.  */
  124.  BOOL kb_vote_result_get(unsigned char *pName,kb_vote_info_t * kb_voteResult)
  125. {
  126.       int tmp,i,buf;
  127.       int _socket;
  128.       struct sockaddr_in tcpc_address;
  129.       kb_vote_info_t kb_voteResulttemp;
  130.   
  131.        _socket = socket(AF_INET,SOCK_STREAM,0);/* create _socket */ 
  132. //printf("n [kb_vote_result_get]:_socket()-0= %d    n",_socket);
  133. if(_socket<0)
  134. return FALSE;
  135.        tcpc_address.sin_family=AF_INET;//以太网协议//PF_INET 广域网协议(暂时还用不到)
  136. tcpc_address.sin_port=htons(6000);
  137. tcpc_address.sin_addr.s_addr=0xc0a809fd;//0xC0A80905;//192.168.0.100;//inet_addr(srvr_addr);
  138. tmp = connect(_socket, (struct sockaddr *)&tcpc_address, sizeof(struct sockaddr_in));
  139. printf("n [kb_vote_result_get]:connect--------tmp=%d",tmp);
  140. if(tmp!=0)
  141. return FALSE;
  142.       //printf("n [kb_vote_result_get]:_socket to ask for result is:[%d],pName:[%s]",_socket,pName);
  143.       tmp=send(_socket, pName, 60, 0);
  144.       //printf("n [kb_vote_result_get]:send------tmp=%d",tmp);
  145.       if(tmp!=60)
  146.    return FALSE;
  147.    
  148.       tmp=recv(_socket,&kb_voteResulttemp,sizeof(kb_voteResulttemp), 0);
  149.       if(tmp!=sizeof(kb_voteResulttemp))
  150.    return FALSE;
  151. /*  
  152.       printf("n [kb_vote_result_get]:recv------tmp=%d",tmp);
  153.       printf("n [kb_vote_result_get]:[before copy]name:[%s],vote count:[%d]",kb_voteResulttemp.name,kb_voteResulttemp.resCount);
  154.       for(i=0;i<kb_voteResulttemp.resCount;i++)
  155.      {
  156.    printf("n [kb_vote_result_get]:[before copy]num:[%d],index:[%d],count:[%d]",i,kb_voteResulttemp.result[i].index,kb_voteResulttemp.result[i].result);
  157.      }
  158.      */
  159.   
  160.      strcpy(kb_voteResult->name,kb_voteResulttemp.name,sizeof(kb_voteResulttemp.name));
  161.      kb_voteResult->resCount=kb_voteResulttemp.resCount;
  162.      for(i=0;i<kb_voteResult->resCount;i++)
  163.      {
  164.           kb_voteResult->result[i].index=kb_voteResulttemp.result[i].index;
  165.    kb_voteResult->result[i].result=kb_voteResulttemp.result[i].result;
  166.      }
  167. /* 
  168.       printf("n [kb_vote_result_get]:[after copy] name:[%s],vote count:[%d]",kb_voteResult->name,kb_voteResult->resCount);
  169.       for(i=0;i<kb_voteResulttemp.resCount;i++)
  170.      {
  171.    printf("n [kb_vote_result_get]:[after copy]num:[%d],index:[%d],count:[%d]",i,kb_voteResult->result[i].index,kb_voteResult->result[i].result);
  172.      }
  173.      */
  174.       tmp=recv(_socket,&buf,sizeof(char), 0);
  175.        //printf("n [kb_vote_result_get]:[confirm message if you want the result]recv------tmp=%d,buf=%d",tmp,buf);
  176.        if(tmp==1)
  177.     return TRUE;
  178. else
  179. return FALSE;
  180. }
  181. /* EOF... */