局域网通信方法

文档序号:7851186阅读:345来源:国知局
专利名称:局域网通信方法
技术领域
本发明涉及网络技术,特别涉及局域网上客户端和服务器建立联系的方法。

背景技术
在局域网上,客户端要与服务器进行通信,以实现客户端对服务器的控制,首先需要建立客户端与服务器的通信联系。这方面的一个典型例子是硬盘录像机(DVR)在网络上的运用。一般的应用中,DVR主机(服务器)安置在现场前端,无需工作人员值守,如煤矿井底、银行、收费站点等。工作人员可通过远端的PC机(客户端)实现远程监控,对所有DVR主机进行统一管理。也可对单个DVR主机进行单独控制,如控制摄像头的上下、左右、远近以及变焦等操作,还可以对服务器的DVR进行各种录像模式设置,报警设置,网络设置等。所有以上的远程操作都是利用现有的网络技术实现的。一般情况下,客户端访问DVR主机,都是在预先知道DVR主机的IP地址和相应的端口号,然后主动发出连接请求,这样两端就建立起了连接,进行相关的网络操作,如发送控制、发送文件等。由于DVR主机的状态是不可预知的,如果客户端要访问的DVR主机不在线或中途死机了,就会发生连接失败的故障。


发明内容
本发明所要解决的技术问题,就是提供一种可以动态地查询网络内所有满足条件的服务器的方法,以便建立客户端和服务器的通信联系。
本发明解决所述技术问题,采用的技术方案是,局域网通信方法,包括建立客户端和服务器的连接;其特征在于,客户端和服务器的连接步骤如下 a.客户端向局域网广播发送带有服务器ID的IP包; b.网络中的服务器收到所述IP包后进行解析,具有所述ID的服务器响应此IP包,并返回包含本机IP地址和端口号的信息;其它服务器则不作任何响应,丢弃此包; c.客户端发送完IP包后,接着创建一个线程,用来专门负责接收网络上服务器的响应信息; d.客户端读取响应信息后,再创建一个线程接收下一个服务器的响应信息; f.客户端将接收的响应信息加入本地管理列表。
本发明的有益效果是,查找服务器方便、快捷,可以通过自动搜索知道哪些服务器已经在线,运行情况等。

具体实施例方式 以下结合实施例,详细描述本发明的技术方案。
本发明的技术方案是,局域网通信方法,包括建立客户端和服务器的连接;其特征在于,客户端和服务器的连接步骤如下 a.客户端向局域网广播发送带有服务器ID的IP包; b.网络中的服务器收到所述IP包后进行解析,具有所述ID的服务器响应此IP包,并返回包含本机IP地址和端口号的信息;其它服务器则不作任何响应,丢弃此包; c.客户端发送完IP包后,接着创建一个线程,用来专门负责接收网络上服务器的响应信息; d.客户端读取响应信息后,再创建一个线程接收下一个服务器的响应信息; f.客户端将接收的响应信息加入本地管理列表; 具体的是,步骤a中,所述IP包包含搜索服务器的相关语句; 进一步的是,所述步骤a中,客户端向局域网广播发送2次IP包; 更具体的是,所述步骤c中,客户端是在消息处理函数中,利用select阻塞机制对接收缓冲区进行监听来接收服务器的响应信息的; 特别地,所述服务器为DVR主机。
实施例 下面以局域网中,客户端对DVR主机的控制,描述本发明的技术方案。
作为局域网内的DVR主机,都具有其身份识别标识(DVR主机的ID)。客户端先向局域网上广播发送一个带有特定识别标识的IP包,考虑到UDP协议的不可靠性,客户端要发送两次IP包。
网络中的所有的DVR主机,收到客户端发送的IP包后,通过解析IP包,取其内容比较,如果具有上述识别标识的DVR主机收到所述IP包,就响应此IP包,并向客户端返回包含本机IP地址和端口号的信息。
客户端接收到返回的响应信息后,就知道了此DVR主机的IP地址和端口号等信息了,将这些信息添加到本机的DVR主机列表中,连接建立完成。而其它非DVR主机接收到所述IP包,不作任何响应,丢弃此IP包。
客户端发送完广播包后,接着创建一个线程,用来专门负责接收网络上DVR主机对客户端的响应信息。客户端在消息处理函数(BroadcastThread)中,利用select阻塞机制来对接收缓冲区进行监听,一旦发现接收缓冲区内有内容(在这里即为有DVR主机的响应信息),立即读取内容。然后再创建一个线程进行接收下一个DVR的响应消息。接收完成,将DVR主机返回的IP地址及端口号等信息,加入本地管理信息列表,连接建立过程结束。
本例部分代码如下(DVR主机的识别标识为CHDVR) 客户端自动搜索DVR的广播发送程序 void CSearchDVR::OnRefresh()  {  char buffer[50]; //定义发送缓冲区  int i=0;  LOOP(i, SERVER_MAXSIZE)m_arrayPort[i]=0;//SERVER_MAXSIZE=5,自定义最大的DVR数量。<!-- SIPO <DP n="3"> --><dp n="d3"/>  memset(buffer,0,50); //清空缓冲区  strcpy(buffer,"CHDVR"); //发送DVR主机识别的消息命令码CHDVR  int nRet=sendto(m_hBroadcastSocket,buffer,50,0,(structsockaddr*)&amp;sockBroadcast,sizeof(sockBroadcast)); //向广播地址sockBroadcast发送“CHDVR”  HANDLE handle=NULL; //定义线程的句柄  if((handle=AfxBeginThread((AFX_THREADPROC)&amp;BroadcastThread,(LPVOID)this))!=NULL)//创建线程,用来接收DVR发送过来的响应消息。  CloseHandle(handle);  } 客户端广播接收的线程处理 UINT BroadcastThread(LPVOID lpVoid)  {   CSearchDVR*pDlg=(CSearchDVR*)lpVoid;   ASSERT(pDlg->m_hWnd);     char buffer[50]; //定义接收缓冲区   int nRet=0;   TIMEVAL tv; //定义阻塞最大时间,时间到达后,就取消<br/>阻塞。   tv.tv_sec=2;   tv.tv_usec=0;   fd_set rfds;    FD_ZERO(&amp;rfds);   FD_SET(pDlg->m_hBroadcastSocket,&amp;rfds);   int length=sizeof(sockaddr_in);   if(select((pDlg->m_hBroadcastSocket)+1,&amp;rfds,NULL,NULL,<!-- SIPO <DP n="4"> --><dp n="d4"/>&amp;tv)) //select用来阻塞程序,直到有DVR发送过来响应消息,自动<br/>唤醒。  {  memset(buffer,0,50); //清空接收缓冲区  nRet=recvfrom(pDlg->m_hBroadcastSocket,buffer,50,0,(sockaddr*)&amp;(pDlg->sockFrom),&amp;length); //接收DVR响应消息。其中sockFrom中包含有主机DVR的IP和端口信息,这是我们目的所在。  if(nRet>0)  {   if(buffer
!=′0′)   pDlg->m_arrayPort[g_nServerCounter++]=atoi(buffer);   pDlg->AddDvrIp(); //把找到的一个DVR IP添加到对应的列表中,进行管理。  }   HANDLE handle=NULL;   If((handle=AfxBeginThread((AFX_THREADPROC)&amp;BroadcastThread,(LPVOID)pDlg))!=NULL) //继续创建一个线程来接收下一个DVR的响应。   CloseHandle(handle);  }  return 1;} 本发明可以集成在DVR主机中,也可用于其它嵌入式产品服务器端和客户端的通信。
权利要求
1.局域网通信方法,包括建立客户端和服务器的连接;其特征在于,客户端和服务器的连接步骤如下
a.客户端向局域网广播发送带有服务器ID的IP包;
b.网络中的服务器收到所述IP包后进行解析,具有所述ID的服务器响应此IP包,并返回包含本机IP地址和端口号的信息;其它服务器则不作任何响应,丢弃此包;
c.客户端发送完IP包后,接着创建一个线程,用来专门负责接收网络上服务器的响应信息;
d.客户端读取响应信息后,再创建一个线程接收下一个服务器的响应信息;
f.客户端将接收的响应信息加入本地管理列表。
2.根据权利要求1所述的局域网通信方法,其特征在于,步骤a中,所述IP包包含搜索服务器的相关语句。
3.根据权利要求1所述的局域网通信方法,其特征在于,所述步骤a中,客户端向局域网广播发送2次IP包。
4.根据权利要求1所述的局域网通信方法,其特征在于,所述步骤c中,客户端是在消息处理函数中,利用select阻塞机制对接收缓冲区进行监听来接收服务器的响应信息的。
5.根据权利要求1、2、3或4所述的局域网通信方法,其特征在于,所述服务器为DVR主机。
全文摘要
本发明涉及网络技术,特别涉及局域网上客户端和服务器建立联系的方法。本发明提供了一种可以动态地查询网络内所有满足条件的服务器的方法,以便建立客户端和服务器的通信联系。本发明的技术方案是,客户端根据服务器的标识信息,发送广播。当需要连接时,客户端向具有特定标识的服务器发出连接请求,具有对应标识的服务器收到请求后,向客户端返回其IP地址、端口号等信息,客户端据此建立与该服务器的联系。本发明的有益效果是,查找服务器方便、快捷,可以通过自动搜索知道哪些服务器已经在线,运行情况等。
文档编号H04L12/28GK1929418SQ20061002187
公开日2007年3月14日 申请日期2006年9月15日 优先权日2006年9月15日
发明者杨毅, 尤金刚, 彭世伟 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1