18,363
社区成员




void CNetworkView::OnSock(WPARAM wParam, LPARAM lParam)
{
SOCKET ss=wParam;//wParam参数标志了网络事件发生的套接口
m_cNetFlag = (char)0x00;
switch(LOWORD(lParam))
{
case FD_ACCEPT:
m_bSwitchTimerFlag = TRUE;
SOCKADDR_IN addrClient;
int Cltlen;
Cltlen=sizeof(SOCKADDR);
m_socketCon1=accept(m_socket1,(SOCKADDR*)&addrClient,&Cltlen);
if(m_socketCon1==INVALID_SOCKET)
{
MessageBox(_T("网络应答失败!"));
return;
}
// ((CStatic *)GetDlgItem(IDC_bmpNet))->SetBitmap(::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BitmapGreen)));
if(SOCKET_ERROR==WSAAsyncSelect(m_socketCon1,m_hWnd,UM_SOCK1,FD_READ|FD_CLOSE|FD_ACCEPT))
{
MessageBox(_T("注册网络读取事件失败!"));
return;
}
break;
case FD_READ:
WSABUF wsabuf;
wsabuf.buf=new char[200];
memset(wsabuf.buf,0,200);
wsabuf.len=200;
DWORD dwRead;
DWORD dwFlag;
dwFlag=0;
dwRead=0;
if(SOCKET_ERROR==WSARecv(ss,&wsabuf,1,&dwRead,&dwFlag,NULL,NULL))
{
MessageBox(_T("注册网络读取事件失败!"));
delete[] wsabuf.buf;
//closesocket(ss);
return;
}
if(dwRead<2)
{
MessageBox(_T("网络接收数据无效!"));
delete[] wsabuf.buf;
return;
}
SetDlgItemText(IDC_EDIT_Rev,(LPCTSTR)wsabuf.buf);
//AnalyzeRecv(wsabuf.buf,dwRead,1);
//Sleep(2);
delete[] wsabuf.buf;
break;
case FD_WRITE:
WSABUF wsaSendBuf;
wsaSendBuf.buf="communication is successful";
wsabuf.len=strlen(wsaSendBuf.buf)+1;
DWORD dwSend;
if(SOCKET_ERROR==WSASend(ss,&wsaSendBuf,1,&dwSend,0,NULL,NULL))
{
MessageBox(_T("网络连接失败!"));
delete[] wsaSendBuf.buf;
//closesocket(ss);
return;
}
break;
case FD_CLOSE:
closesocket(ss);
break;
default:
;
}
}
void CNetworkView::SocketInitial()
{
//端口1000对应的套接字
m_socket1=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,0);
if(INVALID_SOCKET==m_socket1)
{
MessageBox(_T("创建端口1000套接字失败!"));
return;
}
SOCKADDR_IN addrSrv1;
//addrSrv1.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv1.sin_addr.S_un.S_addr=inet_addr("192.168.1.102");
addrSrv1.sin_family=AF_INET;
addrSrv1.sin_port=htons(1000);
if(SOCKET_ERROR==bind(m_socket1,(SOCKADDR*)&addrSrv1,sizeof(SOCKADDR)))
{
MessageBox(_T("端口1000绑定失败!"));
return;
}
if(SOCKET_ERROR==listen(m_socket1,5))
{
MessageBox(_T("端口1000监听失败!"));
return;
}
if(SOCKET_ERROR==WSAAsyncSelect(m_socket1,m_hWnd,UM_SOCK1,FD_ACCEPT|FD_CLOSE))
{
MessageBox(_T("注册端口1000网络读取事件失败!"));
return;
}
}