網路程式設計中常見問題以及解決思路

2021-08-07 21:54:19 字數 1627 閱讀 2177

最近在幫老師做乙個p2p的專案,客戶端包含註冊以及登陸功能,關於資料庫的選擇,嘗鮮採用了最新的mongodb,但是在執行簡單的demo的時候依然出現了許多的問題。文章會逐漸跟新,在我有時間的前提下:

本地測試正常,部署到伺服器發現tcp通訊出現故障,本機作業系統win10,伺服器核心版本如下圖所示:

在windows powershell執行程式發現出現socket.send()方法的錯誤,凡是網路問題就少不了抓包分析了~,本機採用wireshark進行抓包如下所示:

這裡可以看到本機傳送syn(請問你有空麼?)立馬收到了伺服器的回絕rst(沒有!)。伺服器上採用tcpdump指令進行抓包的時候也發現了問題的所在,能收到windows發來的syn包,但是立馬進行了不暇思索的回絕。

我們常見傳送rst的情況有以下幾種:

1、伺服器端口沒有開啟

2、超時

3、快取區中有內容未讀取完全

這裡的問題很容易定位,因為包中並未包含時間異常資訊,直接在windows10 上telnet檢測埠通不通就好,(然後發現不通。
syn(有空嗎?)——>ack,syn(有空啊,你呢?)——>syn(我也有空~)

最近還有乙個很坑的地方就是多執行緒了~多執行緒中1、鎖與2、阻塞 都是十分重要的概念,對應於python的join()方法以及lock()鎖機制。最近乙個常見的eof報錯就是因為主線程線性退出,留下子執行緒在獨自執行,獲取不到讀入資料。這裡可以採用join()方法,將子執行緒加入其中:

def

send

(sock):

while

true:

data = raw_input('>')

sock.send(data)

if data =='exit':

print

'連線結束'

break

sock.close()

defrecv

(sock):

while

true:

data = sock.recv(buffsize)

if data == 'exit':

break

print data

sock.close()

defmain

():

s=socket.socket(socket.af_inet,socket.sock_stream)

s.connect(addr)

ts=thread(target=recv,args=(s,))

ts.start()

tr=thread(target=send,args=(s,))

tr.start()

tr.join()

if __name__=```

"__main__":

main()

Python程式設計中常見問題型別與解決

1 syntaxerror invalid character in identifier 2 語法錯誤有無效識別符號,檢查一下中文符號1 syntaxerror unexpected eof while parsing 2 語法錯誤,多了無法解析的符號,檢查一下是否多 了或者少了括號1 index...

超融合網路常見問題及解決思路

超融合技術架構的實施為公司帶來了意義非凡的價值。不過在許多環境都有那麼一部分應用程式對於效能有著很高和具體的要求,這很容易造成超融合網路的瓶頸。在過去,傳統的集群有專門的儲存系統,訪問共享的資料。超融合的架構通常將內部每個節點的儲存匯聚到乙個虛擬儲存池。i o需求負擔較重的環境會將負載都壓在超融合網...

python程式設計中常見問題及解決方案

1 os.remove infile 移除檔案時,出現錯誤 windowserror error 5 解決方案 windowserror error 5 錯誤是因許可權不足引起的,先使用os.chmod infile,stat.s iwusr 修改該檔案的許可權,然後在進行移除即可 2 os.ren...