folly库net库udp小例子

#include <iostream>

#include "include/folly/net/NetworkSocket.h"
#include "include/folly/net/NetOps.h"



#ifdef __cplusplus

extern "C" {

#endif


#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

#ifdef __cplusplus

}

#endif 


using namespace folly;
using namespace std;
int main(int argc, char *argv[]) {
    if(argc!=3){
        printf("please input:client ip port!
");
    }


    int socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
    if (socket_fd == -1){
        std::cout << "socket error!" << std::endl;
    }
    NetworkSocket network_socket = NetworkSocket(socket_fd);
    struct sockaddr_in dest_sockaddr_in = {0};
    dest_sockaddr_in.sin_family = AF_INET;
    dest_sockaddr_in.sin_port = htons(atoi(argv[2]));
    dest_sockaddr_in.sin_addr.s_addr = inet_addr(argv[1]);


    char buf[1024] = {0};

    while (1)
    {
        printf("please input msg:");
        scanf("%s",buf);
        folly::netops::sendto(network_socket,buf,strlen(buf),0,(struct sockaddr *)&dest_sockaddr_in,sizeof(dest_sockaddr_in));
    
        if(strcmp(buf, "exit") == 0)
        {
            break;
        }
        memset(buf,0,sizeof(buf));
    }

 
    folly::netops::close(network_socket);
    return 0;
}
#include <iostream>

#include "include/folly/net/NetworkSocket.h"
#include "include/folly/net/NetOps.h"



using namespace folly;
using namespace std;


#ifdef __cplusplus

extern "C" {

#endif


#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

#ifdef __cplusplus

}

#endif 






int main(int argc,char *argv[])
{

    if(argc != 2)
    {
        printf("please input:server port
");
        return -1;
    }

    int socket_fd = socket(AF_INET,SOCK_DGRAM,0);
    if(socket_fd < 0 )
    {
        printf("socket error!
");
        return -1;
    }
    NetworkSocket network_socket = NetworkSocket(socket_fd);

    struct sockaddr_in  local_addr = {0};
    local_addr.sin_family  = AF_INET;
    local_addr.sin_port    = htons(atoi(argv[1]));
    local_addr.sin_addr.s_addr = INADDR_ANY;

    int ret = folly::netops::bind(network_socket, (struct sockaddr*)&local_addr, sizeof(local_addr));
    if(ret < 0)
    {
        printf("bind error!
");
        close(socket_fd);
        return -1;
    }
    else
    {
        printf("recvfrom ready!
");
    }


    struct sockaddr_in  src_addr = {0};
    int len = sizeof(src_addr);
    char buf[1024] = {0};

    while(1)
    {
        ret =folly::netops::recvfrom(network_socket, buf, sizeof(buf), 0, (struct sockaddr *)&src_addr, (socklen_t*)&len);

        if(ret == -1)
        {
            break;
        }
        printf("ip:%s,port:%d,",inet_ntoa(src_addr.sin_addr),ntohs(src_addr.sin_port));
        printf("buf=%s
",buf);
        if(strcmp(buf, "exit") == 0)
        {
            break;
        }
        memset(buf, 0, sizeof(buf));
    }

    folly::netops::close(network_socket);
}
原文地址:https://www.cnblogs.com/iuyy/p/14747778.html