比如
想輸出為90,沒想到卻是ffffff90,這個問題害我乙個程式老是出錯char a = \x90;
printf
("%02x"
, a)
;
最終發現只要改為
問題就解決了,其實還是正負數的問題unsigned
char a = \x90;
zlib unresolved external symbol _uncompress
inflate_fast崩潰
網上搜了一下,彙編版本的有坑
解決方法是編譯zlib的時候用releasewithoutasm (debug/releasse那裡選擇)
這樣生成的庫是不崩潰的
通訊雙方建立tcp連線後,主動關閉連線的一方會進入time_wait狀態,一直占用埠號。設定socket屬性可讓其立即終止
linux下
windows下把上面引數都改為0就行了.struct linger ling =
;setsockopt
(server_sockfd, sol_socket, so_linger,
&ling,
sizeof
(ling)
);
對於tcp長連線保活是十分必要的,原因如下:
很多防火牆對一段時間內沒有報文活動的socket會自動關閉。
對於非正常斷開的連線系統並不能偵測到,比如防火牆關閉埠、網線被拔掉、電腦突然奔掉、未關閉應用程式直接關機(服務端無法釋放資源)。(呼叫close(fd)為正常斷開,連線對端可以偵測到)
tcp長連線保持的兩種辦法:
應用層面的心跳機制
自定義心跳訊息頭,一般客戶端主動傳送到服務端,伺服器接收後進行回應(也可以不回應),以便能夠偵測連線是否異常斷開。
tcp協議自帶的保活功能
通過設定tcp keepalive的屬性和傳送底層心跳包的時間間隔。tcp keepalive是在底層定時傳送心跳報文,伺服器端接收到底層的心跳報文直接丟棄,不關心其內容。**如下:
處理命令列引數的乙個函式/*****
/*@author super bert 2014-12-16*/
/*socket tcp保持長連線函式*/
int socket_tcp_alive(int socket)
struct tcp_keepalive in_keep_alive = ;
unsigned long ul_in_len = sizeof(struct tcp_keepalive);
struct tcp_keepalive out_keep_alive = ;
unsigned long ul_out_len = sizeof(struct tcp_keepalive);
unsigned long ul_bytes_return = 0;
in_keep_alive.onoff = 1; /*開啟keepalive*/
in_keep_alive.keepaliveinterval = 5000; /*傳送keepalive心跳時間間隔-單位為毫秒*/
in_keep_alive.keepalivetime = 1000; /*多長時間沒有報文開始傳送keepalive心跳包-單位為毫秒*/
ret = wsaioctl(socket, sio_keepalive_vals, (lpvoid)&in_keep_alive, ul_in_len,
(lpvoid)&out_keep_alive, ul_out_len, &ul_bytes_return, null, null);
if (ret == socket_error)
return 0;
}
"a:b:cd::e"
,這就是乙個選項字串。對應到命令列就是-a ,-b ,-c ,-d, -e 。冒號又是什麼呢? 冒號表示引數,乙個冒號就表示這個選項後面必須帶有引數(沒有帶引數會報錯哦),但是這個引數可以和選項連在一起寫,也可以用空格隔開,比如-a123 和-a 123(中間有空格) 都表示123是-a的引數;兩個冒號的就表示這個選項的引數是可選的,即可以有引數,也可以沒有引數,但要注意有引數時,引數與選項之間不能有空格(有空格會報錯的哦),這一點和乙個冒號時是有區別的。
大致處理**如下:
while ((opt = getopt(argc, argv, "+i:o:f:m:t:t:dncb:s:m:x:qv")) > 0)
switch (opt)
}
記錄一些小問題
1 關於mysql replace用法 update biaozhun set province replace province,縣 縣縣 作用 將biaozhun表裡的province欄位中的縣換為縣縣 字串擷取 update biaozhun set province substring in...
SpringMVC遇到的一些小問題
1 空指標 autowired private departmentdao departmentdao 出現該問題主要是忘記新增了 autowired註解 導致departmentdao未注入到employeedao中 從而出現departmentdao中的getdepartment id 方法不能...
c vector 遇到的一些小問題
c vector 遇到的一些小問題 宦傳建 一 在考慮計算vector中元素時需要將string轉換成int c 中語法 string text int i int.parse text 雖說肯定不是這樣,c 相容c,像下面這樣寫還是會報錯 include 注意標頭檔案 int i int text...