天天看点

UDP_server

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 != )
    {   
        Usage(argv[]);
        return ;
    }   
    int sock = socket(AF_INET,SOCK_DGRAM,);
    if(sock < )
    {   
        perror("sock");
        return();
    }   
    struct sockaddr_in server;
    server.sin_family = AF_INET;
    server.sin_port = htons(atoi(argv[]));
    server.sin_addr.s_addr = inet_addr(argv[]);
    socklen_t len = sizeof(server);
    char buf[];
    while()
    {
        printf("server to ##");
        fflush(stdout);
        ssize_t s = read(, buf, sizeof(buf)-);
        if(s > )
        {
            buf[s] = '\0';
            sendto(sock,buf,sizeof(buf)-,,(struct sockaddr*)&server,len);
        }
        s = recvfrom(sock, buf, sizeof(buf)-,,(struct sockaddr *)&server,&len);
        if(s > )
        {
            printf("client echo$:%s",buf);
        }

    }
    close(sock);
    return ;
}
           

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 != )
    {   
        Usage(argv[]);
        return ;
    }   
    int sock = socket(AF_INET,SOCK_DGRAM,);
    if(sock < )
    {   
        perror("sock");
        return();
    }   
    struct sockaddr_in local;
    local.sin_family = AF_INET;
    local.sin_port = htons(atoi(argv[]));
    local.sin_addr.s_addr = inet_addr(argv[]);
    if(bind(sock,(struct sockaddr*)&local,sizeof(local))<)
    {
        perror("bind");
        return();
    }
    printf("bind success...\n");

    char buf[];
    while()
    {
        struct sockaddr_in client;
        socklen_t len = sizeof(client);
        ssize_t s = recvfrom(sock,buf,sizeof(buf)-,,(struct sockaddr*)&client, &len);
        if(s > )
        {
            buf[s] = '\0';
            printf("client#:%s",buf);
            sendto(sock,buf,sizeof(buf)-,,(struct sockaddr*)&client,len);
        }
        else
        {
            close(sock);
            printf("client quit...\n");
            break;
        }

    }
    close(sock);
    return ;
}
           

运行结果如图:

UDP_server

继续阅读