c++ - 可以在数据报套接字中用于发送和接收吗?

标签 c++ c sockets networking

我的类 MasterSlaveSynchronize 用于发送和接收心跳。 是否可以只使用一个数据报套接字来同时用于发送和接收?

下面的2个方法可以不时运行,也可以同时运行。

void MasterSlaveSynchronize::sendHearBeat() {
    const int HEARBEAT_LEN = 1;
    const char HEARBEAT[1] = { '1' };

    int n = sendto(sock, HEARBEAT, HEARBEAT_LEN, 0,(const struct sockaddr *) &target_, length_);
    if (n < 0)
        printf("Sendto"); //TODO ERR
}

void MasterSlaveSynchronize::recivedHearBeat() {
    char buf[1024];
    if (bind(sock, (struct sockaddr *) &this_, length_) < 0)
        printf("binding"); //TODO err
    while (1) {
        int n = recvfrom(sock, buf, 1024, 0, (struct sockaddr *) &target_,&length_);
        if (n < 0)
            printf("recvfrom"); //TODO ER
        //TODO update got hearbeat
    }

最佳答案

是的,可以为 sendtorecvfrom 使用相同的套接字(确实是预期的)。

但是您的 recivedHearBeat() 函数永远不会退出。如果它在单独的线程中运行,那就没问题。

关于c++ - 可以在数据报套接字中用于发送和接收吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581334/

相关文章:

C++:使用传入的字符串参数访问类型中的内容

c++11 模板工厂模式和带参数的构造函数

c - 在C中读取文件时忽略不必要的字符

Python select.select 泄漏线程

c - Windows C 套接字关闭并重新连接

c - 绑定(bind)到两个本地 IP 失败

c++ - #if 预处理器指令可以嵌套在 C++ 中吗?

c++ - 你怎么称呼这个 : "unsigned int a_bit : 1;"? 是否有位域之外的用途?

c - C 中的 "Dynamic Inheritance"

C动态结构数组,没有错误,运行时程序终止