首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么将上列的程序改进,使其自动回复

2012-08-01 
求助如何将下列的程序改进,使其自动回复?这是其中一段程序 想在另一端的程序在接受到数据后 不用人工输入

求助如何将下列的程序改进,使其自动回复?
这是其中一段程序 想在另一端的程序在接受到数据后 不用人工输入数据 可以自动回复相应的信息。谢谢

C/C++ code
void CChatDlg::OnSock(WPARAM wParam,LPARAM lParam){    switch(LOWORD(lParam))    {    case FD_READ:        WSABUF wsabuf;        wsabuf.buf=new char[200];        wsabuf.len=200;        DWORD dwRead;        DWORD dwFlag=0;        SOCKADDR_IN addrFrom;        int len=sizeof(SOCKADDR);        CString str;        CString strTemp;        HOSTENT *pHost;        if(SOCKET_ERROR==WSARecvFrom(m_socket,&wsabuf,1,&dwRead,&dwFlag,                        (SOCKADDR*)&addrFrom,&len,NULL,NULL))        {            MessageBox("接收数据失败!");            return;        }        pHost=gethostbyaddr((char*)&addrFrom.sin_addr.S_un.S_addr,4,AF_INET);        //str.Format("%s说 :%s",inet_ntoa(addrFrom.sin_addr),wsabuf.buf);        str.Format("%s说 :%s",pHost->h_name,wsabuf.buf);        str+="\r\n";        GetDlgItemText(IDC_EDIT_RECV,strTemp);        str+=strTemp;        SetDlgItemText(IDC_EDIT_RECV,str);        break;    }}void CChatDlg::OnBtnSend() {    // TODO: Add your control notification handler code here    DWORD dwIP;    CString strSend;    WSABUF wsabuf;    DWORD dwSend;    int len;    CString strHostName;    SOCKADDR_IN addrTo;    HOSTENT* pHost;    if(GetDlgItemText(IDC_EDIT_HOSTNAME,strHostName),strHostName=="")    {        ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);        addrTo.sin_addr.S_un.S_addr=htonl(dwIP);    }    else    {        pHost=gethostbyname(strHostName);        addrTo.sin_addr.S_un.S_addr=*((DWORD*)pHost->h_addr_list[0]);    }        addrTo.sin_family=AF_INET;    addrTo.sin_port=htons(6000);    GetDlgItemText(IDC_EDIT_SEND,strSend);    len=strSend.GetLength();    wsabuf.buf=strSend.GetBuffer(len);    wsabuf.len=len+1;    SetDlgItemText(IDC_EDIT_SEND,"");    if(SOCKET_ERROR==WSASendTo(m_socket,&wsabuf,1,&dwSend,0,            (SOCKADDR*)&addrTo,sizeof(SOCKADDR),NULL,NULL))    {        MessageBox("发送数据失败!");        return;    }    }





[解决办法]
你WSARecvFrom到数据以后,然后调用WSASendTo预先准备好的数据不就完了

热点排行