| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1681 人关注过本帖
标题:sockaddr_in转换IP头大啦
取消只看楼主 加入收藏
卡卡西西
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
sockaddr_in转换IP头大啦
各位大虾!小弟不才来求救了!下面的两段代码搞得头爆了!望各位前辈帮我降降温,谢谢!!
        .data
IP        db    '192.168.0.1',0

_Test        proc  
    local    addrs:sockaddr_in

    invoke    inet_addr,offset IP
    mov       addrs.sin_addr,eax

    mov       eax,addrs.sin_addr
    invoke    inet_ntoa,eax
    invoke    MessageBox,NULL,eax,NULL,NULL        ;结果相当正确   192.168.0.1
    ret
_Test        endp

......;问题来了,,,,,
    local    addrs:sockaddr_in
invoke accept,hSocket,addr addrs,edx

       .if    eax!=INVALID_SOCKET
           mov   ecx,addrs.sin_addr                                ; 如果是 lea ecx,addrs.sin_addr 转换出来的就是不正确的
           invoke    inet_ntoa,ecx                                ;转换成功但结果是0.0.0.0 相当气人
           invoke    MessageBox,NULL,eax,NULL,NULL
       .endif
数据发送都正常就是想转换对方的IP老是转换不正确
求救是哪里出了错!第一段代码正确,搬到下面就变卦了
如何才能正确的将 invoke accept,hSocket,addr addrs,edx 对方的IP转换出来
搜索更多相关主题的帖子: sockaddr 
2009-10-31 13:50
卡卡西西
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-31
收藏
得分:0 
来了来了
_bind    proc                                          ;绑定   
        local    @stSin : sockaddr_in
        local    @InAddr : sockaddr_in
        local    @szBuffer:dword
        pushad
        invoke    socket,AF_INET,SOCK_STREAM,0
        mov    hSocket,eax
        mov    @stSin.sin_family,AF_INET
        invoke    htons,8888
        mov    @stSin.sin_port,ax
        mov    @stSin.sin_addr,INADDR_ANY
        invoke    bind,hSocket,addr @stSin,sizeof @stSin
        .if    eax == SOCKET_ERROR

        .else
            invoke listen,hSocket,50
            .While TRUE
                invoke accept,hSocket,offset addrs,0
                .break    .if    eax==INVALID_SOCKET
                invoke    CreateThread,NULL,0,offset _ServiceThread,eax,NULL,esp        ;收数据都成功 就是下面
                invoke    CloseHandle,eax        
               
                mov    eax,addrs.sin_addr                    
                invoke    inet_ntoa,eax
                invoke    MessageBox,NULL,eax,NULL,NULL    ; 这就出问题了 都是 0.0.0.0 有什么办法能取到 addrs中的正确IP?

            .endw
            invoke    closesocket,hSocket
        .endif
        popad

        ret   
_bind    endp
2009-11-01 07:44
卡卡西西
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-31
收藏
得分:0 
真心感谢二位!
问题已成功解决!
2009-11-02 09:34
快速回复:sockaddr_in转换IP头大啦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017678 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved