在应用程序类重载的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不在此列),你不需要做服务器端程序,只需要通过数据库支持的通讯协议和方法进行远程操作即可。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)