非同步通訊端編程

來源:互聯網
上載者:User

部分說明:

#define UM_SOCK WM_USER+1

ON_MESSAGE(UM_SOCK ,OnSock)

afx_msg void OnSock(WPARAM wParam , LPARAM lParam);

BOOL CMyDlg::InitSocket()

{
    m_socket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0);
if(INVALID_SOCKET==m_socket)
{
MessageBox("建立通訊端失敗!");
return FALSE;
}

SOCKADDR_IN addrSock;
addrSock.sin_addr.S_un.S_addr=htonl(ADDR_ANY);
    addrSock.sin_family=AF_INET;
addrSock.sin_port=htons(6000);

if( SOCKET_ERROR==bind(m_socket,(SOCKADDR *)&addrSock,sizeof(SOCKADDR)) )
{
MessageBox("綁定失敗 !");
return FALSE;
}
if( SOCKET_ERROR== WSAAsyncSelect(m_socket,m_hWnd,UM_SOCK,FD_READ) )
{
MessageBox("註冊網路訊息失敗!");
        return FALSE;
}
return TRUE;
}

void CMyDlg::OnBtnSend() 
{
DWORD dwIP;
((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);

SOCKADDR_IN addrTo;
addrTo.sin_addr.S_un.S_addr=htonl(dwIP);
    addrTo.sin_family=AF_INET;
addrTo.sin_port=htons(6000);

CString strsend;
int len;
DWORD dwSend;
WSABUF wsabuf;
len=strsend.GetLength();
wsabuf.buf=strsend.GetBuffer(len);
wsabuf.len=len+1;

SetDlgItemText(IDC_EDIT_SEND,""); 
GetDlgItemText(IDC_EDIT_SEND,strsend); 

if(  SOCKET_ERROR == WSASendTo(m_socket,&wsabuf,1,&dwSend,0,
(SOCKADDR *)&addrTo,sizeof(SOCKADDR),NULL,NULL))
{
MessageBox("SEND ERROR!");
}
}

void CMyDlg::OnSock(WPARAM wParam , LPARAM lParam)
{
switch(LOWORD(lParam))
{
case FD_READ:
WSABUF wsabuf;
wsabuf.buf=new char[200];
wsabuf.len=200;
DWORD dwRead;
DWORD wdFlag=0;
SOCKADDR_IN addrFrom;
int len=sizeof(SOCKADDR);
CString str;
CString strtemp;
        if(WSARecvFrom(m_socket,&wsabuf,1,&dwRead,
&wdFlag,(SOCKADDR *)&addrFrom,&len,0,0)==SOCKET_ERROR)
{
MessageBox("接收資料失敗!");
return ;
}
str.Format("%s說:%s",inet_ntoa(addrFrom.sin_addr),wsabuf.buf);
str+="\r\n";
GetDlgItemText(IDC_EDIT_RECV,strtemp);  
str=str+strtemp;
SetDlgItemText(IDC_EDIT_RECV,str); 
break;
}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.