1、阻塞/非阻塞
阿新 • • 發佈:2018-11-15
/* 函式名 :int fcntl(int fd, int cmd); 參 數 :int fd -- 檔案描述符 參 數 :int cmd -- 控制值 參 數 :flock *lock -- (引數) 返回值 :【成功】返回依賴於cmd的值 【錯誤】返回-1,錯誤原因存於errno. 說 明 :fcntl針對檔案描述符提供控制。 */ int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 標頭檔案 #include<sys/types.h> #include <unistd.h> #include <fcntl.h> /*獲取 flag 值*/ int flags = fcntl(socket, F_GETFL, 0); /* 設定為非阻塞*/ fcntl(socket, F_SETFL, flags | O_NONBLOCK) /* 設定為阻塞 */ fcntl(socket, F_SETFL, 0)
/*非阻塞模式的訊息傳送*/
recv(sockfd, buff, buff_size,MSG_DONTWAIT);
/*非阻塞模式的訊息接受*/
send(scokfd, buff, buff_size, MSG_DONTWAIT);