將ACCEPT改成非阻塞型
這個專案中寫的程式是與遠端進行SOCKET通訊,用到ACCEPT來接受遠端的連線請求,一直以來在程式裡對ACCEPT用的都是阻塞方式,接收到一個新的連線請求後,就建立一個新的執行緒處理與客戶端的通訊任務。今天由於需要實現伺服器端設定客戶端心跳包週期的功能,如果每個執行緒都去查詢資料庫裡心跳包週期有沒有發生改變,實現起來太麻煩,就改用使用主執行緒去查詢資料庫裡存放的心跳包週期,由於主執行緒需要不停地去查詢資料庫,這樣ACCEPT就不能再用阻塞的方式,上網搜了一下,沒找到什麼方法,突然想到我以前recev資料包也是用的阻塞方式,後來用select改為了非阻塞方式,ACCEPT能不能也用select實現非阻塞方式呢?自己試著按照recev的非阻塞方式改了一下程式,ACCEPT成功實現了非阻塞接收連線請求方式。
int maxfdp=NULL; struct fd_set fds; struct timeval timeOut={0,1}; FD_ZERO(&fds); FD_SET(sock_sev,&fds); if (select(maxfdp,&fds,NULL,NULL,&timeOut)) { cout<<"new connection"<<endl; sock_client = accept(sock_sev, (sockaddr *)&addr_client, &nAddrLen); if (INVALID_SOCKET == sock_client) { std::cout << "Failed to accept." << std::endl; continue; } socketClient[i].socketConn=sock_client; std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr)<< std::endl; socketClient[i].ClientID=i; socketClient[i].socketThread=CreateThread(NULL,0,ThreadRead,&socketClient[i],0,socketClient[i].ThreadID); i++; }
相關推薦
將ACCEPT改成非阻塞型
這個專案中寫的程式是與遠端進行SOCKET通訊,用到ACCEPT來接受遠端的連線請求,一直以來在程式裡對ACCEPT用的都是阻塞方式,接收到一個新的連線請求後,就建立一個新的執行緒處理與客戶端的通訊任務。今天由於需要實現伺服器端設定客戶端心跳包週期的功能,如果每個執行緒都去
將域名改成https協議
在百度雲買的域名,今天打算申請下ssl證書,把域改成https訪問 首先申請ssl證書,我申請的是symantec,不要錢。 申請好後下載證書,百度雲下載的是一個crt和一個key檔案。 把證
Linux實驗全紀錄之 非阻塞型通訊程式框架
#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<signal.h> #include<stdlib.h> void sigin
將DNS改成8 8 8 8有什麼利與弊
如果DNS伺服器設定不當,可能會導致網速慢、彈窗廣告、網址打不開、開啟不是自己想要的網站、
mysql通過將or改成union來優化sql效能問題一例
某系統測試環境有支SQL執行時間較長,開發人員請求dba協助優化。 原SQL如下: SELECT g.id, ----省略----- FROM g, y, t, o
將DataTable轉換成List泛型集合助手類
將DataTable轉換成List<T>泛型集合助手類,這個類我放在了Entity實體類層中: [csharp] using System; using System.Collections.Generic; using System.Linq; us
伺服器程式設計心得(四)—— 如何將socket設定為非阻塞模式
1. windows平臺上無論利用socket()函式還是WSASocket()函式建立的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol )
[linux] 將socket設定為非阻塞(non-blocking)
原文:http://blog.csdn.net/wwwsq/article/details/970198 有一個非常有迷惑性的做法是:u_long has = 1;ioctl(m_sock, FION
linux用搜狗輸入法後,只能預設中文,將終端改成英文
linux用搜狗輸入法後,只能預設中文 在安裝搜狗輸入法後,由於搜狗的預設是中文,所以不管開啟什麼,一開始輸入的都是中文,但是使用linux除了在網頁搜尋時使用中文,大多數時候,比如開啟終端都是英文命令,每次都要切換太麻煩,如何才能在每次開啟終端的時候,都預設
get請求返回的是字串,將其改成字典
(void)loginBtnClick:(id)sender{ AFHTTPRequestOperationManager *manager = [AFHTTPRequestOp
chown的許可權限制--普通使用者無法將owner改成其他使用者,如root
[email protected]:~$ chown root motd chown: changing ownership of `motd': Operation not permitted [email protected]:~$ chown
Android Studio 將Activity改成Fragment
lse navig ive art tools ins schema 1.0 this 項目中遇到一個尷尬的問題,因為初學Android,所以用了大量Activity,但現在想要改成Fragment,但是Activity太多,感覺很頭大,研究了很久怎麽改,沒有看到合適的文章
Linux 設備驅動--- 阻塞型字符設備驅動 --- O_NONBLOCK --- 非阻塞標誌【轉】
ble 進程阻塞 例如 缺省 tracking 問題 href 字符驅動 調度 轉自:http://blog.csdn.net/yikai2009/article/details/8653697 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 目
JavaSE8基礎 Integer構造方法 將符合標準的String類型轉成int類型
light 方法 win 異常 javase png integer 基礎 pre os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)
方便的將數字轉成字符串類型並在前面補0
python有的時候需要將數字轉化成字符串來保存或使用。一般可以直接使用或者用str()轉一個數據類型就好了。但是有的時候對數字位數有要求,不足的位數前面用0補齊。比如1需要變成"01"或"001",處理類似工號的時候可能會有這種需求。當然實現起來並不難,不過如何可以更加簡潔方便的實現,而不是寫一大堆的判斷語
後端實現int類型改成相應的Sting字符串
limit shm util setname add detach lis col 類型 private void util_setName(JSONArray jsonArray){ // JSONObject stationJson = insp
FTP(三)將FTP服務改為非獨立服務方式運行
FTP將FTP服務改為非獨立服務方式運行 "此方法只針對CentOS6可用,CentOS7默認就是非獨立服務" 1,需要安裝xinetd服務 yum install xinetd 2,修改FTP主配置文件 vim /etc/vsftpd/vsftpd.conf
如何將Object類型轉換成String類型
lba plain pub help eight 代碼 tle 能夠 try 1. Object.toString()?1obj.toString()註意:必須保證Object不是null值,否則將拋出NullPointerException異常。 2. (String)O
將時間類型的數據轉換成string類型的數據
js datetime stringfunction dateToString(datetime) { // 獲取年份 var year = datetime.getFullYear(); // 獲取月份 從0開始的 var month = datetime.getMonth
服務器編程心得(四)—— 如何將socket設置為非阻塞模式
led -h bsp wait per 設置 inux sign 也有 1. windows平臺上無論利用socket()函數還是WSASocket()函數創建的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af,