void handler(int sig)
signal(sigalrm, handler);
alarm(5);
int ret = read(fd, buf, sizeof(buf));
if(ret == -1 &&errno == eintr) else if(ret >=0) else if(ret >=0) while (ret < 0 && errno == eintr);
if (ret == 0)
else if (ret == 1)
ret = 0;
}return ret;
}
/**
* write timeout - 寫超時檢測函式,不含寫函式
* @fd:檔案描述符
* @wait_seconds:等待超時秒數,如果為0不檢測超時
* 成功(未超時) 返回0,失敗返回-1,超時返回-1並且errno = etimedout
*/int write_timeout(int fd, unsigned int wait_seconds)
while (ret < 0 && errno == eintr);
if (ret == 0)
else if (ret == 1)
ret = 0;
}return ret;
}
/**
* accept_timeout - 帶超時的accept
* @fd:套接字
* @addr:輸出引數,返回對方位址
* @wait_seconds:等待超時秒數,如果為0表示正常模式
* 成功(未超時)返回已連線套接字,超時返回-1並且errno = etimedout
*/int accept_timeout(int fd, struct sockaddr_in *addr, unsigned int wait_seconds)
while (ret < 0 && errno == eintr);
if (ret == -1)
return -1;
else if (ret == 0)
}if (addr != null)
ret = accept(fd, (struct sockaddr*)addr, &addrlen);
else
ret = accept(fd, null, null);
/* if (ret == -1)
err_exit("accept");
*/return ret;
}
/**
* active_nonblock - 設定i/o為非阻塞模式
* @fd:檔案描述符
*/void active_nonblock(int fd)
/** * deactive_nonblock - 設定i/o為阻塞模式
* @fd:檔案描述符
*/void deactive_nonblock(int fd)
/** * connect timeout - connect
* @fd:套接字
* @addr:要連線的位址
* @wait_seconds:等待超時秒數,如果為0表示正常模式
* 成功(未超時)返回0,失敗返回-1,超時返回-1並且errno = etimedout
*/int connect_timeout(int fd, struct sockaddr_in *addr, unsigned int wait_seconds)
while (ret < 0 && errno == eintr);
if (ret == 0)
else if (ret < 0)
return -1;
else if (ret == 1)
if (err == 0)
else}}
if (wait_seconds > 0)
return ret;
}
#include #include #include #include #include #include #include #include #include #include #define err_exit(m) \
do \
while(0)
java基礎十一 Socket
一 udp 無連線通訊。特點 1.傳輸效率高 2.安全性低,不保證可到的資料傳輸。開發流程 傳送端 客戶端 1.建立udp服務 datagramsocket ds new datagramsocket 2.封裝資料報 datagrampacket byte buff udp test getbyte...
C大事 第十一講 Socket網路程式設計
網路程式設計 計算機與計算機之間的通訊。網域名稱 ip位址 dns伺服器。手機聯絡人 號碼 乙個計算機可以同時執行多個網路程式,引入了埠port 與就是乙個計算機上可以併發執行多個網路程式,而不會再互相之間產生干擾 c s b s結構。p2p程式 即時客戶端,優勢伺服器端。tcp傳輸控制協議 udp...
socket程式設計
一直以為serversocket accept之後客戶端才能發資訊,實驗後得出如下結論 1 serversocket沒有accept時,client是可以傳送資訊到server端的。2 serversocket accept之後,正在處理訊息時,client也是可以傳送資訊到server端。如果se...