| | |
| | | /********************************************************************************* |
| | | * Copyright: (C) 2018 LingYun IoT Studio |
| | | * All rights reserved. |
| | | * Copyright: (C) 2018 LingYun IoT Studio |
| | | * All rights reserved. |
| | | * |
| | | * Filename: sockudp_client.c |
| | | * Description: This file is UDP socket client example source code. |
| | | * Filename: sockudp_client.c |
| | | * Description: This file is UDP socket client example source code. |
| | | * |
| | | * Version: 1.0.0(10/23/2018) |
| | | * Author: Guo Wenxue <guowenxue@gmail.com> |
| | | * ChangeLog: 1, Release initial version on "2018-10-23 01:38:08 PM" |
| | | * Version: 1.0.0(10/23/2018) |
| | | * Author: Guo Wenxue <guowenxue@gmail.com> |
| | | * ChangeLog: 1, Release initial version on "2018-10-23 01:38:08 PM" |
| | | * |
| | | ********************************************************************************/ |
| | | #include <stdio.h> |
| | |
| | | #include <netinet/in.h> |
| | | #include <arpa/inet.h> |
| | | |
| | | #define SERVER_IP "127.0.0.1" |
| | | #define SERVER_PORT 8890 |
| | | #define SERVER_IP "127.0.0.1" |
| | | #define SERVER_PORT 8890 |
| | | |
| | | |
| | | int main(int argc, char **argv) |
| | | { |
| | | int sockfd = -1; |
| | | int rv = -1; |
| | | char buf[1024]; |
| | | struct sockaddr_in serv_addr; |
| | | socklen_t addrlen = sizeof(serv_addr); |
| | | float temp; |
| | | int sockfd = -1; |
| | | int rv = -1; |
| | | char buf[1024]; |
| | | struct sockaddr_in serv_addr; |
| | | socklen_t addrlen = sizeof(serv_addr); |
| | | float temp; |
| | | |
| | | /* create UDP socket */ |
| | | sockfd = socket(AF_INET, SOCK_DGRAM, 0); |
| | | if(sockfd < 0) |
| | | { |
| | | printf("create socket failure: %s\n", strerror(errno)); |
| | | return -1; |
| | | } |
| | | /* create UDP socket */ |
| | | sockfd = socket(AF_INET, SOCK_DGRAM, 0); |
| | | if(sockfd < 0) |
| | | { |
| | | printf("create socket failure: %s\n", strerror(errno)); |
| | | return -1; |
| | | } |
| | | |
| | | /* set socket server information */ |
| | | memset(&serv_addr, 0, sizeof(serv_addr)); |
| | | serv_addr.sin_family = AF_INET; |
| | | serv_addr.sin_port = htons(SERVER_PORT); |
| | | inet_aton( SERVER_IP, &serv_addr.sin_addr ); |
| | | /* set socket server information */ |
| | | memset(&serv_addr, 0, sizeof(serv_addr)); |
| | | serv_addr.sin_family = AF_INET; |
| | | serv_addr.sin_port = htons(SERVER_PORT); |
| | | inet_aton( SERVER_IP, &serv_addr.sin_addr ); |
| | | |
| | | while(1) |
| | | { |
| | | /* send message to socket server */ |
| | | strncpy(buf, "Hello, LingYun IoT socket server!", sizeof(buf)); |
| | | if( sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&serv_addr, addrlen) < 0 ) |
| | | { |
| | | printf("Write data to server [%s:%d] failure: %s\n", SERVER_IP, SERVER_PORT, strerror(errno)); |
| | | break; |
| | | } |
| | | printf("Send message to socket server okay\n"); |
| | | while(1) |
| | | { |
| | | /* send message to socket server */ |
| | | strncpy(buf, "Hello, LingYun IoT socket server!", sizeof(buf)); |
| | | if( sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr *)&serv_addr, addrlen) < 0 ) |
| | | { |
| | | printf("Write data to server [%s:%d] failure: %s\n", SERVER_IP, SERVER_PORT, strerror(errno)); |
| | | break; |
| | | } |
| | | printf("Send message to socket server okay\n"); |
| | | |
| | | /* receive message from socket server */ |
| | | memset(buf, 0, sizeof(buf)); |
| | | printf("Wating reply from socket server...\n"); |
| | | rv = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&serv_addr, &addrlen); |
| | | if(rv < 0) |
| | | { |
| | | printf("Read data from server failure: %s\n", strerror(errno)); |
| | | break; |
| | | } |
| | | printf("Receive [%d] bytes data from server: %s", rv, buf); |
| | | printf("\n"); |
| | | /* receive message from socket server */ |
| | | memset(buf, 0, sizeof(buf)); |
| | | printf("Wating reply from socket server...\n"); |
| | | rv = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&serv_addr, &addrlen); |
| | | if(rv < 0) |
| | | { |
| | | printf("Read data from server failure: %s\n", strerror(errno)); |
| | | break; |
| | | } |
| | | printf("Receive [%d] bytes data from server: %s", rv, buf); |
| | | printf("\n"); |
| | | |
| | | sleep(3); |
| | | } |
| | | sleep(3); |
| | | } |
| | | |
| | | close(sockfd); |
| | | return 0; |
| | | close(sockfd); |
| | | return 0; |
| | | } |