Guest User

Untitled

a guest
Oct 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <errno.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8. #include <netdb.h>
  9. #include <string.h>
  10.  
  11. void error(const char *msg)
  12. {
  13. perror(msg);
  14. exit (EXIT_FAILURE);
  15. }
  16.  
  17. struct mjpeg_header {
  18. unsigned short size;
  19. char reserved;
  20. char reserved2;
  21. };
  22.  
  23. void save(char *img_data) {
  24. //TODO: dynamic filename
  25. FILE *file;
  26. file = fopen("/tmp/test.jpg","w+");
  27.  
  28. if(file==NULL) {
  29. error("ERROR opening file");
  30. }
  31.  
  32. fputs(img_data, file);
  33.  
  34. fclose(file);
  35. }
  36.  
  37. int main(int argc, char *argv[])
  38. {
  39.  
  40. int sock, n;
  41. unsigned short int port = 4321;
  42.  
  43. struct sockaddr_in serv_addr;
  44. struct hostent *hostinfo;
  45.  
  46.  
  47. char request[] = {0x30,0x31,0x31,0x30,0x0a};
  48. char camera_address[] = "10.0.1.200";
  49. struct mjpeg_header header;
  50.  
  51. sock = socket(AF_INET, SOCK_STREAM, 0);
  52.  
  53. if (sock < 0) {
  54. error("ERROR opening socket");
  55. }
  56.  
  57. serv_addr.sin_family = AF_INET;
  58. serv_addr.sin_port = htons(port);
  59.  
  60. if (!(hostinfo = gethostbyname(camera_address))) {
  61. error("ERROR No host found");
  62. }
  63.  
  64. serv_addr.sin_addr = *(struct in_addr*)hostinfo->h_addr;
  65.  
  66. if (0 > connect(sock, (struct sockaddr *) &serv_addr, sizeof (serv_addr))) {
  67. error ("ERROR Connecting");
  68. }
  69.  
  70. n = write(sock,request,strlen(request));
  71.  
  72. if (n < 0) {
  73. error("ERROR writing to socket");
  74. }
  75.  
  76. n = read(sock,&header,sizeof(header));
  77.  
  78. if (n < 0) {
  79. error("ERROR reading from socket");
  80. }
  81.  
  82. char image_data[header.size];
  83.  
  84. bzero(image_data,header.size);
  85.  
  86. n = read(sock,image_data,header.size);
  87.  
  88. if (n < 0) {
  89. error("ERROR reading from socket");
  90. }
  91.  
  92. close(sock);
  93.  
  94. save(image_data);
  95.  
  96. return 0;
  97. }
Add Comment
Please, Sign In to add comment