udp_server

来源:互联网 发布:中国能源战略知乎 编辑:程序博客网 时间:2024/06/16 00:23
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <string.h>void usage(char* arg){    printf("%s [server_ip][server_port]\n",arg);}int main(int argc,char* argv[]){    if(argc != 3)    {        usage(argv[0]);        return 1;    }    int sock = socket(AF_INET,SOCK_DGRAM,0);    if(sock < 0)    {        perror("socket");        return 2;    }    struct sockaddr_in server;    server.sin_family = AF_INET;    server.sin_port = htons(atoi(argv[2]));    server.sin_addr.s_addr = inet_addr(argv[1]);    char buf[1024];    while(1)    {        printf("Plase Enter:");        fflush(stdout);        ssize_t s = read(0,buf,sizeof(buf)-1);        buf[s]=0;        sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&server,sizeof(server));        socklen_t len = sizeof(server);        s = recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&server,&len);        if(s < 0)        {            perror("recvfrom");            return 3;        }        printf("%s",buf);    }    return 0;}#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <string.h>void usage(char* arg){    printf("%s [local_ip][local_port]\n",arg);}int main(int argc,char* argv[]){    if(argc != 3)    {        usage(argv[1]);        return 1;    }    int sock = socket(AF_INET,SOCK_DGRAM,0);    if(sock < 0)     {         perror("socket");         return 2;     }    struct sockaddr_in server;    server.sin_family = AF_INET;    server.sin_port = htons(atoi(argv[2]));    server.sin_addr.s_addr = inet_addr(argv[1]);    if(bind(sock,(struct sockaddr*)&server,sizeof(server)) < 0)    {        perror("bind");        return 3;    }    char buf[1024];    while(1)    {        struct sockaddr_in client;        socklen_t len = sizeof(client);        ssize_t s = recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&client,&len);        if(s < 0)        {            perror("recvfrom");            return 4;        }        buf[s]=0;        printf("%s",buf);        sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&client,sizeof(client));    }    return 0;}
原创粉丝点击