1.接收发到本机端口的代码
servercore *vthis = (servercore*)arg; //打?开?socket侦?听? struct sockaddr_in local_addr; //local ip info int sockfd; local_addr.sin_addr.s_addr = INADDR_ANY; local_addr.sin_family = AF_INET; local_addr.sin_port = htons(BROADCAST_SERVER_PORT); bzero(&local_addr.sin_zero,8); if (-1 == (sockfd = socket(AF_INET,SOCK_DGRAM,0))) { throw "servercore::recv_broadcast_thread : socket error"; } if (-1 == bind(sockfd,(sockaddr*)&local_addr,sizeof(local_addr))) { throw "servercore::recv_broadcast_thread : bind error"; } socklen_t sockaddr_len = sizeof(sockaddr); sockaddr_in remote_addr; //client ip info size_t nrecv_size; const int BUFSIZE = 1024; char recv_buffer[BUFSIZE]; while (vthis->m_flag_exit != true) { printf("."); fflush(stdout); nrecv_size = recvfrom(sockfd, recv_buffer, BUFSIZE, 0,(sockaddr*)&remote_addr,&sockaddr_len); if (nrecv_size > 0) { if (recv_buffer[0] == 0x11) { std::cout << "接?收?到?新?设?备?" << std::endl; } } }
2.发送出去的UDP socket代码(待续…)