用mfc基于对话框 UDP 服务器端

用mfc基于对话框 UDP 服务器端,第1张

在应用程序类重载的InitInstance函数中调用AfxSocketInit()函数,加载套接字。

if(!AfxSocketInit())

{

AfxMessageBox("加载套接字库失败!")

return FALSE

} 在你的对话框类中添加如下函数InitSocket(),初始化套接字 BOOL CChatDlg::InitSocket()

{

m_socket=socket(AF_INET,SOCK_DGRAM,0)

if(INVALID_SOCKET==m_socket)

{

MessageBox("套接字创建失败!")

return FALSE

}

SOCKADDR_IN addrSock

addrSock.sin_family=AF_INET

addrSock.sin_port=htons(5000)

addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY)

int retval

retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR))

if(SOCKET_ERROR==retval)

{

closesocket(m_socket)

MessageBox("绑定失败!")

return FALSE

}

return TRUE

} 在对话框类的OnInitDialog()函数中调用上述InitSocket()函数,初始化套接字,同时创建一个线程接收数据: RECVPARAM *pRecvParam=new RECVPARAM

pRecvParam->sock=m_socket

pRecvParam->hwnd=m_hWnd

HANDLE hThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL)

CloseHandle(hThread) 其中struct RECVPARAM

{

SOCKET sock

HWND hwnd

} 是自定义结构体 接收线程函数RecvProc:

DWORD WINAPI CChatDlg::RecvProc(LPVOID lpParameter)

{

SOCKET sock=((RECVPARAM*)lpParameter)->sock

HWND hwnd=((RECVPARAM*)lpParameter)->hwnd

delete lpParameter

SOCKADDR_IN addrFrom

int len=sizeof(SOCKADDR)

char recvBuf[200]

int retval

while(TRUE)

{

retval=recvfrom(sock,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len)

if(SOCKET_ERROR==retval)

break

}

return 0

} recvBuf中就保存了你要的数据。

打开浏览器,输入登陆地址,登陆路由器管理界面。接着输入用户名和密码进行登陆。 点击”DHCP服务器“选项,然后勾驯启用 DHCP服务器“。接着输入”地址池开始地址“和”地址池结束地址“。 设置完成后,点击”保存“按钮,然后重启一下路由器即可生效。

有远程直接方法数据库的方法。大中型数据库基本都是网络数据库,如常见的ORACLE / MSSQL / MYSQL等。

MFC编程,对这些数据库可以直接通过ADO进行查询和修改,常用的办法,就是用IP地址和实例(一般为默认)作为连接字符串中的SERVER即可。

对于网络型数据库(ACCESS、DBASE不在此列),你不需要做服务器端程序,只需要通过数据库支持的通讯协议和方法进行远程操作即可。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/181513.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存