socket在accept的时候能获得客户端的IP地址,但是使用recvfrom函数得到的IP为204

hawkgreen 2021-08-05 17:26:57

服务端代码如下:

//SOCKET m_server ;        //这个在头文件里定义了
m_server = socket(AF_INET,SOCK_STREAM,0);
if(省略)
{省略
}
SOCKADDR_IN m_sockaddr;
m_sockaddr.sin_family=AF_INET;
m_sockaddr.sin_port  =htons(6000);
m_sockaddr.sin_addr.S_sun.S_addr = htonl(INADDR_ANY);
int retval
retval = bind(m_server,(SOCKADDR*)&m_sockaddr,sizeof(SOCKADDR));
if(SOCKET_ERROR=retval)
{省略
}
if(listen(m_server,5)<0)
{省略
}
int len=sizeof(SOCKADDR);
//SOCKET sockConn;        //这个在头文件里定义了
//SOCKET addClientAddress;//这个在头文件里定义了
sockConn=accept(m_server,(SOCKADDR*)&addClientAddress,&len);
//这里加断点能看到addClientAddress里的地址是127.0.0.1
//struct RECVPARAM      //这个结构体在头文件里定义
//{ SOCKET sock;
//  HWND   hwnd;
//  SOCKADDR_IN saddr_in;
//}
if(sockConn!=-1)
{
    RECVPARAM *pRecvParam = new RECVPARAM;
    pRecvParam ->sock=sockConn;
    pRecvParam ->hwnd=m_hWnd;
    pRecvParam ->saddr_in = addClientAddress;
    //开接收数据的线程:
    HANDLE hTread=CreateThread(NULL,0,RecvpRroc,(LPVOID)pRecvParam,0,NULL);
    CloseHandle(hThread);
}
/////////////////////////////
//下面是接收的线程函数:
DWORD WINAPI CMFC_TCP_SERVERDlg:RecvProc(LPVOID lpParameter)
{
    SOCKET sock=((RECVPARAM*)lpParameter)->sock;
    SOCKET hwnd=((RECVPARAM*)lpParameter)->hwnd;
    SOCKADDR_IN saddr_in = ((RECVPARAM*)lpParameter)->saddr_in;
    delete lpParameter;

    SOCKADDR_IN addrFrom;
    int len=sizeof(SOCKADDR);
    
    wchar_t recvBuf[200];
    wchar_t tempBuf[400];
    int retval;
    while(1)
    {
        memset(&recvBuf,0,200*sizeof(wchar_t ));
        retval=recvfrom(sock,(char *)recvBuf,200,NULL,(SOCKADDR *)&addrFrom,&len);
        //在这里加断点,看到addrFrom里的地址就是 cccccccc,显示出来就是204.204.204.204
        //请问,我的程序哪里有问题吗?
        if(SOCKET_ERROR==retval)
        {
            break;
        }
    }
}


程序如上,注释里也说明了,在accept的地方看地址就能看到127.0.0.1,在recvfrom那看断点就看不到,只能看到204.204.204.204,请问我的程序哪里出了问题?大家帮指点下。

...全文
122 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
网络编程
加入

1.8w+

社区成员

VC/MFC 网络编程
社区管理员
  • 网络编程
申请成为版主
帖子事件
创建了帖子
2021-08-05 17:26
社区公告
暂无公告