我的类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
}
答案 0 :(得分:2)
是的,对sendto
和recvfrom
使用相同的套接字很好(确实可以预料)。
但是,recivedHearBeat()
函数永远不会退出。如果它在一个单独的线程中运行,那没关系。