是否可以在数据报套接字中同时用于发送和接收

Is it ok to use in both datagram socket for send and received?

本文关键字:用于 数据报 套接字 是否      更新时间:2023-10-16

我的类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()函数永远不会退出。 没关系,如果它在单独的线程中运行。