亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3209 | 回復(fù): 14
打印 上一主題 下一主題

不好意思,在這兒?jiǎn)杺(gè)網(wǎng)絡(luò)問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-09-24 21:28 |只看該作者 |倒序?yàn)g覽
win32 SDK編程問題:
用socket函數(shù)建立一個(gè)UDP連接時(shí),各寫了一個(gè)發(fā)送端(sendto())和接受端(recvfrom()),有一點(diǎn)老是搞不明白,如果先打開接受端再發(fā)送,程序沒問題。但是反過來,先打開發(fā)送端(while(true)不斷發(fā)送),再接受數(shù)據(jù)時(shí),recvfrom就會(huì)返回錯(cuò)誤(SOCKET_ERROR錯(cuò)誤)!

搞不懂怎么解決!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2007-09-24 21:47 |只看該作者
printf("%d\n",GetLastError());之后把錯(cuò)誤號(hào)查一下錯(cuò)誤結(jié)果

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-09-24 22:09 |只看該作者
因?yàn)榻邮斩诉未打開, 所以你發(fā)送的數(shù)據(jù)會(huì)被對(duì)方主機(jī)拒絕("ICMP Port Unreachable "). 這個(gè)錯(cuò)誤在你調(diào)用 send/recv 的時(shí)候返回給用戶進(jìn)程. 你這種情況可以簡(jiǎn)單忽略, 或者在用戶進(jìn)程中判斷 socket 是否可用.

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2007-09-24 23:18 |只看該作者
哥們沒理解,我意思:先打開發(fā)送端,后打開接受端,也能正確運(yùn)行。怎么搞?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2007-09-25 07:44 |只看該作者
udp不需要建立連接的吧?

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2007-09-25 14:56 |只看該作者
你的意思是如果接收端沒打開,那么發(fā)送端就等待是么?要不發(fā)送端發(fā)給誰。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2007-09-25 15:30 |只看該作者
愣是沒看懂。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2007-09-25 22:12 |只看該作者
意思是:recvfrom在沒有收到數(shù)據(jù)時(shí),應(yīng)該是阻塞的,不返回(除非超時(shí))。
但是我這個(gè)程序不知道怎么搞的,如果先運(yùn)行sendto(),再運(yùn)行recvfrom,recvfrom就會(huì)報(bào)錯(cuò)。難道就不允許先不停地發(fā)送sendto??
難到是我得程序出錯(cuò)了?

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2007-09-25 22:42 |只看該作者
還是貼代碼吧!
接受端:
        SOCKET sockSer = socket(AF_INET,SOCK_DGRAM,0);

        SOCKADDR_IN sa;
        int len = sizeof(SOCKADDR);
        char recvbuf[10];
        sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
        sa.sin_family = AF_INET;
        sa.sin_port          = htons(4545);
       
        bind(sockSer,(SOCKADDR*)&sa,len);

        SOCKADDR_IN addRecv;
        int i=0;
        int rval;

        while(1)
        {
                rval = recvfrom(sockSer,recvbuf,10,0,(SOCKADDR*)&addRecv,&len);
                if(rval==SOCKET_ERROR)
                {
                        cout<<"SOCKET_ERROR!"<<endl;
                }
                cout<<recvbuf<<endl;
        }

        closesocket(sockSer);


發(fā)送端:
        SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);

        SOCKADDR_IN sa;
        int len = sizeof(SOCKADDR);
        sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
        sa.sin_family = AF_INET;
        sa.sin_port          = htons(4545);
       
        bind(sock,(SOCKADDR*)&sa,len);

        char sendbuf[] = "Hello";

        while(true)
        {
                sendto(sock,sendbuf,6,0,(SOCKADDR*)&sa,len);
        }

先打開接受端,再打開發(fā)送端,recvfrom返回SOCKET_ERROR,順序反過來先開接受端就沒問題,問一下怎么回事?

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2007-09-25 22:51 |只看該作者
原帖由 vincol 于 2007-9-25 22:42 發(fā)表
還是貼代碼吧!
接受端:
        SOCKET sockSer = socket(AF_INET,SOCK_DGRAM,0);

        SOCKADDR_IN sa;
        int len = sizeof(SOCKADDR);
        char recvbuf[10];
        sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
        sa ...

沒弄過windows,不過你看看bind,如果這兩段代碼在一臺(tái)機(jī)器上跑的話,檢查一下bind的返回值,我估計(jì)有
一個(gè)是返回錯(cuò)誤。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP