UDP 客户端服务器

//udp--客户端
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define SIZE 100
#define IP "127.0.0.1"
#define PORT 10086

int main()
{
    int socketID = 0;
    int addrLength = 0;
    int ret = 0;
    char buf[SIZE] = {0};
    struct sockaddr_in addr;

    //创建socket--UDP
    socketID = socket(AF_INET, SOCK_DGRAM, 0);
    if (socketID < 0)
    {
        perror("socket error");
        return -1;
    }
    printf("socket ok\r\n");
    //设置对方的地址
    addrLength = sizeof(addr);
    memset(&addr,  0, addrLength);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(PORT);
    addr.sin_addr.s_addr = inet_addr(IP);
    //发送消息
    fgets(buf, SIZE - 1, stdin);
    ret = sendto(socketID, buf, strlen(buf) - 1, 0, (struct sockaddr *)&addr, addrLength);
    if (ret > 0)
    {
        printf("client send ok\r\n");
    }
    //接收消息
    memset(buf, 0, SIZE);
    ret = recvfrom(socketID, buf, SIZE - 1, 0, (struct sockaddr *)&addr, &addrLength);
    if (ret > 0)
    {
        printf("client get :%s, from %d\r\n", buf, ntohs(addr.sin_port));
    }
    //关闭套接字
    close(socketID);
    return 0;
}
//udp--server
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define IP "127.0.0.1"
#define PORT 10086
#define SIZE 100

int main()
{
    int socketID = 0;
    int ret = 0;
    int on = 1;
    int addrLength = 0;
    char buf[SIZE] = {0};
    struct sockaddr_in addr;

    //创建套接字  UDP
    socketID = socket(AF_INET, SOCK_DGRAM, 0);
    if (socketID < 0)
    {
        perror("socket error");
        return -1;
    }
    //设置套接字地址可以重用
    setsockopt(socketID, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
    printf("socket ok\r\n");
    //绑定自己的地址
    addrLength = sizeof(addr);
    memset(&addr, 0, addrLength);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(PORT);
    addr.sin_addr.s_addr = INADDR_ANY;
    ret = bind(socketID, (struct sockaddr *)&addr, addrLength);
    if (ret < 0)
    {
        perror("bind error");
        close(socketID);
        return -1;
    }
    printf("bind ok\r\n");
    //接收消息
    ret = recvfrom(socketID, buf, SIZE - 1, 0, (struct sockaddr *)&addr, &addrLength);
    if (ret > 0)
    {
        printf("server get : %s, port=%d\r\n", buf, ntohs(addr.sin_port));
    }
    //发送消息
    fgets(buf, SIZE - 1, stdin);
    ret = sendto(socketID, buf, strlen(buf) - 1, 0, (struct sockaddr *)&addr, addrLength);
    if (ret > 0)
    {
        printf("server send ok\r\n");
    }
    //关闭套接字
    close(socketID);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_34998666/article/details/82497365