请各位帮我看看这段代码有什么问题???感谢 !
是线程里面的:
void __fastcall ThreadRecv::Execute()
{
//---- Place thread code here ----
struct timeval tvSelect;
fd_set fds_t;
int ret;
struct sockaddr_in FromAddr;
int sockLen;
time_t t_send_hb = time(NULL);
time_t t_recv_hb = time(NULL);
while ( !Terminated )
{
if ( time(NULL) - t_send_hb >= 10 )
{
//send hb
struct sockaddr_in ToAddr;
memset(&ToAddr, 0, sizeof(struct sockaddr_in));
ToAddr.sin_family = AF_INET;
ToAddr.sin_addr.s_addr = inet_addr(Form1->Edit_ip->Text.c_str());//从窗口中取
ToAddr.sin_port = htons(StrToInt(Form1->Edit_port->Text));//从窗口中取
char outbuf[8];
memset(outbuf, 0, sizeof(outbuf));
strcpy(outbuf, "HB2");
MainForm->UdpSocket->SendTo(outbuf,strlen(outbuf),ToAddr);//使用UdpSocket控件
t_send_hb = time(NULL);
}
FD_ZERO(&fds_t);
FD_SET(MainForm->UdpSocket->Handle, &fds_t);//请问这是干什么用?????错误提示在这里
tvSelect.tv_sec = 0;
tvSelect.tv_usec = 500 * 1000;
if ( select(FD_SETSIZE, &fds_t, NULL, NULL, &tvSelect) < 0 )
{
continue;
}
........(省略)
请帮我看看这段代码缺陷在哪里?为什么会出错?变量的定义有什么不规范的没有?
感谢!