UDP_server

来源:互联网 发布:java 解压缩tar文件 编辑:程序博客网 时间:2024/06/07 20:42

udp_client.c

#include<stdio.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>static void Usage(const char* proc){    printf("Usage:%s[local_ip][local_port]\n",proc);}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("sock");        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]);    socklen_t len = sizeof(server);    char buf[1024];    while(1)    {        printf("server to ##");        fflush(stdout);        ssize_t s = read(0, buf, sizeof(buf)-1);        if(s > 0)        {            buf[s] = '\0';            sendto(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&server,len);        }        s = recvfrom(sock, buf, sizeof(buf)-1,0,(struct sockaddr *)&server,&len);        if(s > 0)        {            printf("client echo$:%s",buf);        }    }    close(sock);    return 0;}

udp_server.c

#include<stdio.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>static void Usage(const char* proc){    printf("Usage:%s[local_ip][local_port]\n",proc);}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("sock");        return(2);    }       struct sockaddr_in local;    local.sin_family = AF_INET;    local.sin_port = htons(atoi(argv[2]));    local.sin_addr.s_addr = inet_addr(argv[1]);    if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)    {        perror("bind");        return(3);    }    printf("bind success...\n");    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)        {            buf[s] = '\0';            printf("client#:%s",buf);            sendto(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&client,len);        }        else        {            close(sock);            printf("client quit...\n");            break;        }    }    close(sock);    return 0;}

运行结果如图:
这里写图片描述

原创粉丝点击