TIdUDPServer 的Broadcast在Vista下無法發出 |
答題得分者是:careychen
|
hughes0201
一般會員 發表:12 回覆:10 積分:9 註冊:2008-11-04 發送簡訊給我 |
各位前輩,小弟寫了一個簡單的廣播程式和公司的機器溝通,在Windows XP下可以正常運作,
在Vista下卻無法運作,使用wireshark來抓取封包,可是連發出封包的訊息也都沒有看到。 後來使用winsocket直接來發廣播封包,可是也是沒有看到發出的封包。 小弟的IDE是BCB6,以下是部分的發播包程式: [code cpp] // udpSearch為一個 TIdUDPServer元件 String aBufStr; char Buf[4] = {0}; Buf[3] = GET_MAC; aBufStr.SetLength(5); CopyMemory(&aBufStr[1], Buf, 4); if (!udpSearch->Active) udpSearch->Active = true; // 使用TIdUDPServer 發廣播封包 udpSearch->Broadcast(aBufStr, XPORT_BROADCAST_PORT); // 使用winsocket發廣播封包 BoradCast(XPORT_BROADCAST_PORT, Buf); ..... ..... // 使用winsocket發廣播封包的function void __fastcall BoradCast(const int port, char* buffer) { SOCKET sd; SOCKADDR_IN addr; BOOL bBroadcast=true; sd = socket(AF_INET,SOCK_DGRAM,0); setsockopt(sd,SOL_SOCKET,SO_BROADCAST,(LPSTR)&bBroadcast,sizeof(BOOL)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = INADDR_BROADCAST; sendto(sd,buffer,sizeof(buffer),0,(LPSOCKADDR)&addr,sizeof(SOCKADDR)); } [/code] 請問可能錯誤的方向為何? |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
使用 Delphi 或 BCB 加上 Indy 開發時,會碰上 Vista 中 UAC 管控的問題,
所以要讓您的程式可在 Vista 下執行請準備一個檔案叫 UAC.manifest ( 檔名隨意 ) 在裡面打上 [code delphi] <?xml version="1.0" encoding="UTF-8" standalone="yes"?> [/code] 其中 asInvoker 也可換成 requireAdministrator 差別在,執行者的身份不同 將上面的 UAC.manifest 存檔後,再打開文字檔為 UAC.rc,內容如下: UAC 24 UAC.manifest 存檔後使用 brcc32 編繹成 UAC.res 後在您的 dpr 中加入這個 res 檔就可以了 {$R UAC.res}
------
價值的展現,來自於你用哪一個角度來看待它!! |
hughes0201
一般會員 發表:12 回覆:10 積分:9 註冊:2008-11-04 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
HI, 原理可以參考小弟在另一篇分享的資料
在 Delphi 中加入 Windows Vista 的 UAC 提示功能 ===================引 用 hughes0201 文 章=================== 感謝大大~~~可以了~~ 方便再請問一個問題嗎?程式是被UAC鎖住,那上面的內容是大大你是用什麼原理來解決的呢? 照上面的做法可以解決,只是我不太懂這個原理~~><,比較好奇~~
------
價值的展現,來自於你用哪一個角度來看待它!! |
hughes0201
一般會員 發表:12 回覆:10 積分:9 註冊:2008-11-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |