udpserver.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. *** author: zhouchao
  3. *** date: 2019-03-28
  4. *** version: 1.00
  5. *** e-mail: zhouchao@storlead.com 1959353124@qq.com
  6. *** brief: LM73 driver
  7. ***
  8. */
  9. #include "udp.h"
  10. int udpserver_init(int argc, char *argv[])
  11. {
  12. uint8_t serverIP[50] = {0};
  13. unsigned short serverPort = 0;
  14. int serverSocket = 0;
  15. int iret=0;
  16. strcpy(serverIP,"192.168.0.15");
  17. serverPort = atoi("623");
  18. //create UDP socket
  19. serverSocket = socket(AF_INET,SOCK_DGRAM,0);
  20. if(serverSocket == 0)
  21. {
  22. printf("create UDP socket error\n");
  23. return 0;
  24. }
  25. struct sockaddr_in serverAddr;
  26. int addr_len = sizeof(struct sockaddr_in);
  27. memset(&serverAddr,0, sizeof(struct sockaddr_in));
  28. serverAddr.sin_family = AF_INET;
  29. serverAddr.sin_port = htons(serverPort);
  30. serverAddr.sin_addr.s_addr = inet_addr(serverIP);
  31. //bind socket
  32. iret = bind(serverSocket,(struct sockaddr *)&serverAddr,addr_len);
  33. if(iret < 0)
  34. {
  35. printf("bind error\n");
  36. return 0;
  37. }
  38. return serverSocket;
  39. }
  40. int udp_receiver(int serverSocket,uint8_t * rec_buf,uint16_t buf_leng,struct sockaddr_in * clientAddr)
  41. {
  42. int dataLen = 0;
  43. unsigned short clientport = 0;
  44. char clientIP[50] = {0};
  45. struct sockaddr_in clientAddr_t;
  46. int addr_len = sizeof(struct sockaddr_in);
  47. memset(rec_buf, 0,buf_leng );
  48. dataLen = recvfrom(serverSocket,rec_buf, buf_leng,0,
  49. (struct sockaddr *)clientAddr, &addr_len);
  50. return dataLen;
  51. }
  52. int udp_send(int serverSocket,uint8_t * send_buf,uint16_t buf_leng,struct sockaddr_in * clientAddr)
  53. {
  54. int dataLen = 0;
  55. int addr_len = sizeof(struct sockaddr_in);
  56. dataLen = sendto(serverSocket,send_buf, buf_leng,0,
  57. (struct sockaddr *)clientAddr, addr_len);
  58. return dataLen;
  59. }