免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1681 | 回复: 2
打印 上一主题 下一主题

[函数] vc下bind函数报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-09 10:22 |只看该作者 |倒序浏览
程序老是在bind()时报10049号错误,不知道为什么,哪位高手指点一下?谢谢,代码如下:

#include "testsocket.h"

int main()
{
    int         ret;
    WSADATA     wsadata;
    SOCKET      sock;
    char        hostname[512];
    struct hostent  *localhost;

    WSAStartup(MAKEWORD(2,2), &wsadata);

    sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED);
    if (sock == INVALID_SOCKET)
    {
        return -1;
    }
    bool flag    = true;
    ret = setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&flag, sizeof(flag));
    if (ret != 0)
    {
        cout << "set error!" << WSAGetLastError() << endl;
        return -1;
    }

    memset(hostname, 0, sizeof(hostname));
    gethostname(hostname, sizeof(hostname));
    localhost   = gethostbyname(hostname);
    if (localhost == NULL)
    {
        return -1;
    }
    cout << "myip: " << inet_ntoa(*(struct in_addr *)(localhost->;h_addr_list[0])) << endl;

    struct sockaddr_in myaddr;

    myaddr.sin_family   = AF_INET;
    myaddr.sin_addr     = *(struct in_addr *)(localhost->;h_addr_list[0]);
    myaddr.sin_port     = htons(34432);

    ret = bind(sock, (PSOCKADDR)&myaddr, sizeof(myaddr));
    if (ret != 0)
    {
        cout << "bind error: " << WSAGetLastError() << endl;
        return -1;
    }
    DWORD dwValue = 1;
    ret = ioctlsocket(sock, SIO_RCVALL, &dwValue);
    if (ret != 0)
    {
        return -1;
    }

    int i   = 0;
    char    RecvBuf[BUFFER_SIZE];
    MyIp    *myip;
    while (i < 5)
    {
        // 接收原始数据包信息
        int ret = recv(sock, RecvBuf, BUFFER_SIZE, 0);
        if (ret >; 0)
        {
            myip    = (struct MyIp *)RecvBuf;

            cout << "IP SOURCE: "<< inet_ntoa(*(struct in_addr *)myip->;send_ip) << endl;
        }
    }

    cout << "clear" << endl;
    WSACleanup();

    return 0;
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-04-09 10:30 |只看该作者

vc下bind函数报错

PSOCKADDR

struct sockaddr *
宏定义吗?
windows下的socket不懂。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2004-04-09 12:00 |只看该作者

vc下bind函数报错

vc 下基本上都可以用 unix 下的 socket 函数的,如果你用宏,那我也就不知道了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP