UDP客户端

xiaoxiao2021-02-28  132

#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <string.h> #include <arpa/inet.h> #define SERV_PORT      9877 #define BUF_MAX_SIZE   1024 int main(int argc, char *argv[]) {     socklen_t cli_addr_len;     int sock_fd;     struct sockaddr_in addr;     int ret;     char buffer[BUF_MAX_SIZE] = {0};     ssize_t nwrite_bytes, nread_bytes;     if (2 != argc)     {   printf("Usage: ./client <IP address>\n"); exit(EXIT_FAILURE);     }     sock_fd = socket(AF_INET, SOCK_DGRAM, 0);                 //创建 socket     if (-1 == sock_fd)     { perror("socket"); exit(EXIT_FAILURE);     }     memset((struct sockaddr_in*)&addr, 0, sizeof(struct sockaddr_in));     addr.sin_family = AF_INET;                                //指定 socket 域     inet_aton(argv[1], &addr.sin_addr);                       //指定 IP     addr.sin_port = htons(SERV_PORT);                         //指定 端口     while (1)     { cli_addr_len = sizeof(addr);  //fgets(buffer, BUF_MAX_SIZE, stdin); scanf ("%s", buffer); if (strncmp("end", buffer, 3) == 0) { break; } nwrite_bytes = sendto(sock_fd, buffer, strlen(buffer),0,(struct sockaddr *)&addr, cli_addr_len); if (-1 == nwrite_bytes) { perror("sendto"); exit(EXIT_FAILURE); } printf("Request send to server\n"); nread_bytes = recvfrom(sock_fd, buffer, BUF_MAX_SIZE,0,(struct sockaddr *)&addr, &cli_addr_len); if (-1 == nread_bytes) { perror("recvfrom"); exit(EXIT_FAILURE); } printf("Server say: "); fputs(buffer, stdout); printf ("\n");     } exit(EXIT_SUCCESS); }
转载请注明原文地址: https://www.6miu.com/read-30104.html

最新回复(0)