udpserver.c

来自「sock编程 一个tcp源码一个udp源码 希望大家喜欢」· C语言 代码 · 共 73 行

C
73
字号
#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <stdio.h>#include <errno.h>#include <time.h>#include "listen_server.h"const char *DAYTIME_PORT="13111";intmain(int argc, char *argv[]){    int listenfd, n;    socklen_t addrlen;    char *myhost;    char timeStr[256];    struct sockaddr_storage clientaddr;    time_t now;    char b[256];    char clienthost[NI_MAXHOST];    char clientservice[NI_MAXSERV];    myhost="localhost";    if (argc > 1)        myhost=argv[1];    listenfd = listen_server(myhost, DAYTIME_PORT, AF_UNSPEC, SOCK_DGRAM);    if (listenfd < 0) {         fprintf(stderr,                  "listen_server error:: could not create listening "                 "socket\n");         return -1;    }    addrlen = sizeof(clientaddr);    for ( ; ;) {        n = recvfrom(listenfd,                     b,                     sizeof(b),                     0,                     (struct sockaddr *)&clientaddr,                      &addrlen);        if (n < 0)             continue;        memset(clienthost, 0, sizeof(clienthost));        memset(clientservice, 0, sizeof(clientservice));        getnameinfo((struct sockaddr *)&clientaddr, addrlen,                    clienthost, sizeof(clienthost),                    clientservice, sizeof(clientservice),                    NI_NUMERICHOST);        printf("Received request from host=[%s] port=[%s]\n",               clienthost, clientservice);        memset(timeStr, 0, sizeof(timeStr));        time(&now);        sprintf(timeStr, "%s", ctime(&now));        n = sendto(listenfd, timeStr, sizeof(timeStr), 0,                    (struct sockaddr *)&clientaddr,                    addrlen);    }    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?