我遇到的socket tcp ip問題

2021-06-13 08:50:05 字數 846 閱讀 1100

1.坑爹,居然由於客戶端太快,導致 客戶1的鏈結剛剛到**1處,客戶2的鏈結就立馬到了**1處,吧客戶1的connfd給覆蓋掉了。到處出現2個同樣的執行緒。尼瑪

int connfd = accept(server_socket, (struct sockaddr *)&client_addr,&length);//1

if(pthread_create(&tid, null, requesthandle, (void *)&connfd) != 0)         //2

因為覆蓋了,所以導致兩條客戶端的訊息,都傳送到同一條服務端的鏈結了,導致應用層自定協議讀取資料紊亂,然後就free() : invali next size ***x .... 段錯誤,直接記憶體錯誤。

解決:唉,網上沒找到,還得自己想辦法。我去。我的想法是,用list來push_back()每個新的「套接字「,這樣就不會存在重複了,對吧。尼瑪。估計有更好的解決方法,等我找到了再寫上。尼瑪。

好吧,我承認上面的方法沒用,現在又想出乙個,枷鎖咯。讓這裡和執行緒裡面的那個接受東東作為乙個原子操作即可。這樣就不會有覆蓋鳥。

2.不斷的建立執行緒,但你必須自己釋放執行緒縮開闢的堆疊。雖然這些堆疊是系統幫你開的,但是是你要求系統給你弄個執行緒的。所以呢,他開闢,你釋放。

讓執行緒自己設乙個標誌,讓自己脫離其他,然後執行緒就能夠自己完畢後自己釋放了。否則執行緒結束了,他的堆疊沒人釋放的。坑爹。 就是那個 p******xx(self)啥的。

3.為什麼rb+ 和 wb+區別,寫速度效能這麼大。

4.永不關閉的鏈結,如果客戶端應用層關了又開,開了又關,會導致服務端應用層協議獲取亂資料。導致over. 因為應用層關了但其實核心中的快取裡面還是存有資料的。導致下一次發資料的時候就亂讀取了。

ios實現基於socket tcp ip的通訊

asyncsocket的官方文件 使用方法如下 1 建立工程。2 把asyncsocket新增到專案中。3 新增cfnetwork.framework到工程中。4 實現測試類 import import asyncsocket.h inte ce iphone socketviewcontrolle...

我遇到的 DLL Hell

dll hell 資料 dll hell字面意思是dll 災難 是由於com元件公升級引起的程式不能執行的情況。com物件常常被編譯為dll檔案。com元件模型雖然很不錯,但是它自身存在致命的缺陷。由於com物件可以被重用,這樣多個程式可能使用乙個com物件 如果這個com元件公升級了,就很有可能出...

那些我面試遇到的

void setname nsstring str void setname nsstring str 三.簡述單例模式,用 建立乙個單例模式。單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項 五。簡述多執行緒,多執行緒的幾種方法。ios多執行...