首页 新闻 搜索 专区 学院

c++ UDP通信数据不正确!!!!求解

0
悬赏园豆:20 [已解决问题] 解决于 2012-08-09 16:35

我通过sendto发送的数据recvfrom接收 可是在接收数据是发现数据莫名的少几个字符
我第一次发送:123456 实际收到的为 1234
我第二次发送:abcdefg 时间收到的为 abcd
我第三次发送:5 实际收到的为 5bcd

以下是我的代码

接收数据代码

SOCKADDR_IN addrRecv;//获取发送端的地址信息
    char resultStr[100];//接收发送消息
    memset(resultStr, 0, strlen(resultStr));
    char tempStr[200];
    memset(tempStr, 0, strlen(tempStr));
    int len = sizeof(SOCKADDR);
    int rfrom;
    while (true)
    {
        rfrom = recvfrom(m_sock, resultStr, sizeof(resultStr), 0, (SOCKADDR*)&addrRecv, &len);
        if (SOCKET_ERROR == rfrom)
        {
            break;
        }
        //sprintf(tempStr, "%s to: \r\n %s", inet_ntoa(addrRecv.sin_addr), resultStr);

        ::PostMessage(hwnd, WM_RECVDATA, 0, (LPARAM)resultStr);
    }

发送数据的代码

DWORD s_ip;
    ((CIPAddressCtrl*)GetDlgItem(IDC_IP_TEXT))->GetAddress(s_ip);
    fflush(stdout);
    SOCKADDR_IN addrTo;
    addrTo.sin_family = AF_INET;
    addrTo.sin_port = htons(19019);
    addrTo.sin_addr.S_un.S_addr = htonl(s_ip);

    CString sendStr;
    GetDlgItemText(IDC_EDIT_SENDTEXT, sendStr);
    sendto(m_Sock, (LPSTR)(LPCTSTR)sendStr, sendStr.GetLength()+1, 0, 
        (SOCKADDR*)&addrTo, sizeof(SOCKADDR));

 各位大侠我是新手 请各位指教一下!!

山鹰-Chian的主页 山鹰-Chian | 初学一级 | 园豆:4
提问于:2012-08-09 15:21
< >
分享
最佳答案
0

不正确啊,不正确,怎么办?

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2012-08-09 15:55

是我的代码有问题还是什么情况啊??

山鹰-Chian | 园豆:4 (初学一级) | 2012-08-09 15:58

@山鹰-Chian: 不知道啊,不知道啊。

Launcher | 园豆:45045 (高人七级) | 2012-08-09 15:59

@程序猿.码农: 你的项目是unicode吗?

Launcher | 园豆:45045 (高人七级) | 2012-08-09 16:03

@程序猿.码农: 我在vs2010下面新建的mfc是默认的!

山鹰-Chian | 园豆:4 (初学一级) | 2012-08-09 16:24

项目是unicode的

山鹰-Chian | 园豆:4 (初学一级) | 2012-08-09 16:26

@山鹰-Chian: 在项目的属性中是可以看到字符集设置的,你既然不愿意看,我只能告诉你这么测试一下了:

char szText[6] = {'1','2','3','4','5','6'};

sendto(m_Sock,szText,6......);

接收的时候,这样:

char szText[6] = {0};

recvfrom(m_Sock,szText,6.....);

你可以设置断点,查看两个 szText 数组对应索引上的值是否相等。

Launcher | 园豆:45045 (高人七级) | 2012-08-09 16:28

@程序猿.码农: 哥们多谢 可以了 unicode的问题 我选成 使用多字节字符集 就ok了

山鹰-Chian | 园豆:4 (初学一级) | 2012-08-09 16:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册