2011-09-21 102 views
1

我創建一個UDP套接字(centos 6),我想發送廣播消息。一切工作,創造插座工程 - 插座(..)返回值= 25,但:setsockopt返回errno = 2

int val = 1; 
     if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) < 1){ 
      debug("setsockoopt failed with errno: %d, socket %d", errno, a); 
     } 

setsockopt的設置errno值= 2 Communictaion工作,即時發送UDP數據包到XXX255主機,和我所有的應用程序收到
它,但即時從那裏該錯誤號來到(錯誤= 2 =沒有這樣的文件或目錄)

問候

+0

您需要具體說明OS /版本。 – fche

+0

嘗試char val ='1'和sizeof(char) 這就是beej所說的http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#broadcast他說:'// char broadcast ='1'; //如果這不起作用,試試這個' –

回答

4

成功完成後,將返回值0疑惑;否則將返回值 值-1,並將全局變量errno設置爲指示 錯誤。

這是從setsockopt manpage成功返回0,所以這只是你的條件是錯誤的。如果沒有錯誤,errno的價值就不相關了,這就是爲什麼在這裏你得到一個相當荒謬的價值。

if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) != 0){ 

是你需要的。