日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

c 异步中断服务器连接,异步连接和断开与epoll(Linux)

發布時間:2023/11/27 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 异步中断服务器连接,异步连接和断开与epoll(Linux) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個“完整”的答案在這里以防別人正在尋找這樣的:

#include

#include

....

....

int retVal = -1;

socklen_t retValLen = sizeof (retVal);

int status = connect(socketFD, ...);

if (status == 0)

{

// OK -- socket is ready for IO

}

else if (errno == EINPROGRESS)

{

struct epoll_event newPeerConnectionEvent;

int epollFD = -1;

struct epoll_event processableEvents;

unsigned int numEvents = -1;

if ((epollFD = epoll_create (1)) == -1)

{

printf ("Could not create the epoll FD list. Aborting!");

exit (2);

}

newPeerConnectionEvent.data.fd = socketFD;

newPeerConnectionEvent.events = EPOLLOUT | EPOLLIN | EPOLLERR;

if (epoll_ctl (epollFD, EPOLL_CTL_ADD, socketFD, &newPeerConnectionEvent) == -1)

{

printf ("Could not add the socket FD to the epoll FD list. Aborting!");

exit (2);

}

numEvents = epoll_wait (epollFD, &processableEvents, 1, -1);

if (numEvents < 0)

{

printf ("Serious error in epoll setup: epoll_wait() returned < 0 status!");

exit (2);

}

if (getsockopt (socketFD, SOL_SOCKET, SO_ERROR, &retVal, &retValLen) < 0)

{

// ERROR, fail somehow, close socket

}

if (retVal != 0)

{

// ERROR: connect did not "go through"

}

}

else

{

// ERROR: connect did not "go through" for other non-recoverable reasons.

switch (errno)

{

...

}

}

總結

以上是生活随笔為你收集整理的c 异步中断服务器连接,异步连接和断开与epoll(Linux)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:c 异步中断服务器连接,异步连接和断开与epoll(Linu