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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2285 | 回復: 9
打印 上一主題 下一主題

udp程序問題 客戶端如何知道服務端主機不存在? [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-11-18 11:55 |只看該作者 |倒序瀏覽
從unp上看到,可以利用connect得到遠程服務程序沒有運行的消息。
那么有沒有辦法得知遠程主機不存在呢?
比如在內網中,我向ip 192.168.1.100(此ip的主機不存在) 發(fā)送udp數(shù)據(jù)包.

請各位不吝指教!

論壇徽章:
0
2 [報告]
發(fā)表于 2005-11-18 12:00 |只看該作者
難道是不能實現(xiàn)的 -_-!

論壇徽章:
0
3 [報告]
發(fā)表于 2005-11-18 12:03 |只看該作者
udp:
socket(...);
connect(..);
write(..);
然后任何對socket的操作都會返回icmp的異步出錯信息.
用udp你不可能僅僅只write一下了事,所以是可以得到錯誤信息的.

論壇徽章:
0
4 [報告]
發(fā)表于 2005-11-18 12:45 |只看該作者
謝謝樓上的答復

我用unp上的一個例子dgcliconnect.c試過向一個不存在的主機發(fā)送回饋請求。 如果主機存在的話,總能得到響應,就算主機上服務沒開。

可是如果主機不存在,則程序沒有任何輸出,阻塞等待在read上。

論壇徽章:
0
5 [報告]
發(fā)表于 2005-11-18 12:52 |只看該作者
#include "unp.h"

void dg_cli( FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)
{
        int n;
        char sendline[MAXLINE], recvline[MAXLINE + 1];

        Connect(sockfd, (SA*)pservaddr, servlen);
        while(Fgets(sendline, MAXLINE, fp) != NULL){
                Write(sockfd, sendline, strlen(sendline));
                fprintf(stderr, "write ok!n");
                n = Read(sockfd, recvline, MAXLINE);
                fprintf(stderr, "read ok!n");

                recvline[n] = 0;
                Fputs(recvline, stdout);
        }
}

運行程序后 輸入 a  回車
輸出 write ok
然后就等待在read上了

論壇徽章:
0
6 [報告]
發(fā)表于 2005-11-18 13:45 |只看該作者
to 樓上;
描述一下你的運行環(huán)境,可以的話.

論壇徽章:
0
7 [報告]
發(fā)表于 2005-11-18 14:12 |只看該作者
redhat linux EL 4
gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)

網絡中有兩臺主機 192.168.1.2  192.168.1.3
192.168.1.1 是一個對外網小型路由器
程序運行在192.168.1.2上 其向 192.168.1.4(不存在) 發(fā)送數(shù)據(jù)

程序中用到的庫函數(shù)來自 w.richard.stevens 的 unp version 2

論壇徽章:
0
8 [報告]
發(fā)表于 2005-11-18 16:09 |只看該作者
可以設置成非阻塞的

論壇徽章:
0
9 [報告]
發(fā)表于 2005-11-18 17:06 |只看該作者
原帖由 openX 于 2005-11-18 16:09 發(fā)表
可以設置成非阻塞的


這樣應該可以不阻塞于read, 不過估計不會返回服務端不可達的錯誤的。

論壇徽章:
0
10 [報告]
發(fā)表于 2005-11-18 22:44 |只看該作者
發(fā)送方節(jié)點的ARP在不能解析local node的MAC的情況下,會產生ICMP嗎?產生的話會傳遞給udp層嗎?
我在linux和AIX得出的結果都是不會產生icmp出錯信息.

有誰熟悉這部分協(xié)議的,解釋一下原因吧.
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP