# include“ltdic.h”
L_LTDIC_APIL_INTL_DicomListenExt(hNet, pszHostAddress, nHostPort, nNbPeers, nIpType)
建立连接以侦听传入的连接请求。
一个DICOM网络句柄。方法返回的句柄L_DicomCreateNet函数。
包含主机的IP地址(服务器地址)的字符串。
主机端口号(服务器端口号)。
传递给WinSock listen()函数的backlog参数的值,用于限制等待连接的队列大小。
IP地址类型。可能取值为:
| 价值 | 意义 | 
|---|---|
| DICOM_IPTYPE_NONE | [0x000]用于初始化。 | 
| DICOM_IPTYPE_IPV4 | [0x001]只使用IPv4地址。 | 
| DICOM_IPTYPE_IPV6 | [0x002]只使用IPv6地址。 | 
| DICOM_IPTYPE_IPV4_OR_IPV6 | [0x003]同时使用IPv4和IPv6地址。 | 
| 价值 | 意义 | 
|---|---|
| DICOM_SUCCESS | 活动很成功。 | 
| >0 | 发生错误。指返回代码. | 
L_DicomListenExt()是L_DicomListen()的扩展,允许您指定要使用哪种类型的Internet协议版本。
如果pszHostAddress为“”或NULL,则IP地址将是本地计算机的地址。
如果pszHostAddress为“*”,则IP地址将是本地计算机的所有地址。如果本地计算机有多个网络接口和地址,这很有用。
如果nHostPort为0,则端口号为第一个可用的端口号。
要作为客户端连接到服务器,必须首先使用创建并初始化DICOM网络的句柄L_DicomCreateNet.接下来,设置将通过调用使用的回调函数L_DicomSetCallback.然后调用L_DicomConnect或L_DicomConnectExt(如果需要IPv6支持)来建立连接。
要将计算机用作服务器,必须首先使用创建并初始化DICOM网络的句柄L_DicomCreateNet.接下来,设置将通过调用使用的回调函数L_DicomSetCallback.然后调用L_DicomListen或L_DicomListenExt监听传入的连接请求。
L_DicomListenExt()是L_DicomListen()的扩展,它允许您指定要使用的Internet协议版本的类型。为nIpType传递DICOM_IPTYPE_IPV4以支持Internet协议版本4 (IPv4),这是自1981年以来一直在使用的标准“点分四”32位地址格式。例如IPv4地址为192.168.0.195
为“nIpType”配置DICOM_IPTYPE_IPV6,以支持IPv6。IPv6使用128位地址格式。IPv6地址的示例为fe80::18bd:81f: 6b2 . 759f
为了同时支持IPv4和Ipv6地址,nIpType需要传递DICOM_IPTYPE_IPV6。
如果对L_DicomListenExt的调用失败,请确保传递给pszHostAddress的IP地址是在网络中可访问的有效地址。使用windows ping命令可以验证IPv4地址和IPv6地址的可访问性。例如,要验证192.168.0.195在您的网络中是可访问的,请执行以下操作:
启动命令提示符,并键入以下命令。
萍192.168.0.195
注意以下是等价的:
nNbPeers参数指定了WinSock listen()函数使用的backlog参数的大小。例如,假设将值设置为3,并且有4个人试图同时连接。在这种情况下,所有4个都将被拒绝,因为连接积压队列已满。但如果在第四个连接建立之前,其中一个连接已经被接受,那么所有连接都将正常工作。
执行以下步骤确定连接的客户端数量并设置最大连接数:
使用L_GetClientCount函数在“OnReceiveAssociateRequest”处理程序。
将该值与允许的最大连接数进行比较。
如果连接的客户端数量大于允许的最大连接数,则向试图连接的客户端发送“SendAssociateReject”命令。
必需的dll和库
Win32, x64, Linux。
这个示例实现了一个非常基本的服务器,它侦听所有本地IPv4和IPv6地址。
首先运行此示例,然后运行的示例L_DicomConnectExt,这是一个非常基本的客户端,将连接到这个服务器。
//向前声明L_VOID EXT_CALLBACK OnAcceptCB(HDICOMNET, L_INT nError, L_VOID* pUserData);L_INT DicomListenExtExample (L_VOID){L_INT nRet = L_DicomStartUp();如果(nRet != DICOM_SUCCESS)返回nRet;HDICOMNET hServer = L_DicomCreateNet(NULL, DICOM_SECURE_NONE);/*设置回调函数*/DICOMNETCALLBACK cb = {0};cb。pfnAccept = (ACCEPTCALLBACK)OnAcceptCB;cb。pUserData = NULL;L_DicomSetCallback (hServer cb);//创建一个服务器来接收最多25个客户端//监听所有本地IP地址(IPv4和IPv6)nRet = L_DicomListenExt(hServer, TEXT(“*”), 104, 25, dicom_iptype_ipv4_or_ipv6);返回nRet;}L_VOID EXT_CALLBACK OnAcceptCB(HDICOMNET, L_INT nError, L_VOID* pUserData){L_TCHAR szMsg[800] = {0};L_TCHAR szTemp[800] = {0};HDICOMNET hClient = 0;L_INT32 lClients = 0;L_TCHAR szPeerAddress[200] = {0};L_TCHAR szHostAddress[200] = {0};L_UINT uPort = 0;L_INT nRet = DICOM_SUCCESS;L_TCHAR *pszMessageBoxTitle = TEXT(“接受”);UNREFERENCED_PARAMETER (pUserData);wsprintf (szMsg文本("***NetAccept Event ***\n nStatus[%d]\n"), nError);如果(错误!= DICOM_SUCCESS){MessageBox(NULL, szMsg, pszMessageBoxTitle, MB_OK);返回;}//接受连接尝试hClient = L_DicomCreateNet(NULL, DICOM_SECURE_NONE);L_DicomAccept (hNet hClient);//这里我们通常设置回调函数//对于这个例子,我们不设置任何回调//关于如何设置回调的完整示例,请参见L_DicomListen的示例lstrcat (szMsg文本(“接受\ n”));//显示一些关于连接的信息nRet = L_DicomGetHostInfo(hNet, szHostAddress, 200, &uPort);如果(nRet != DICOM_SUCCESS){对话框(NULL,文本(“OnAcceptCB错误”), pszMessageBoxTitle, MB_OK);返回;}wsprintf (szTemp文本(“HostAddress (% s) \ nHostPort % d \ n”), szHostAddress, uPort);lstrcat (szMsg szTemp);//显示客户端信息lClients = L_DicomGetClientCount(hNet);hClient = L_DicomGetClient(hNet, lClients - 1);wsprintf (szTemp文本(“ClientCount % d \ n”), lClients);lstrcat (szMsg szTemp);nRet = L_DicomGetPeerInfo(hClient, szPeerAddress, 200, &uPort);如果(nRet != DICOM_SUCCESS){对话框(NULL,文本(“OnAcceptCB错误”), pszMessageBoxTitle, MB_OK);返回;}wsprintf (szTemp文本(“PeerAddress (% s) \ nPeerPort % d \ n”), szPeerAddress, uPort);lstrcat (szMsg szTemp);MessageBox(NULL, szMsg, pszMessageBoxTitle, MB_OK);}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。
