ソケットサーバ|ソケットクライアント - >パッケージスティッキー現象

####サーバー
のインポートソケット
読み込み時間
SK = socket.socket() 
あなたはポート再利用することができ、バインドメソッドの前に、この文を追加します
(1、socket.SOL_SOCKET、socket.SO_REUSEADDR)sk.setsockoptを
#タイ(ネットワークホストに登録)アドレスポートを設定
sk.bind(( "127.0.0.1"、9000))
sk.listen()

コネチカット、ADDR = sk.accept()
conn.send( "6" .encode(" UTF -8 "))
メッセージ="こんにちは" 
conn.send(message.encode(" UTF-8 "))
#time.sleep(0.1)
conn.send("世界".encode(" UTF-8「))


#第四波
はconn.close() ポート返金
sk.close()


####クライアント
のインポートソケット
読み込み時間
SK = socket.socket()
sk.connect(( "127.0.0.1"、9000))
9000)) 
#1 time.sleep(0.2)
int型= RES0(sk.recv(1).decode( "UTF-8"))#のRES0 "6" 
を印刷(RES0)
RES1 = sk.recv(RES0)
印刷(RES1) 印刷(res1.decode(" UTF -8「))
RES2 = sk.recv(10)
印刷(RES2)
sk.close()
---------------------------- -------------------------------------------------- ---------------- 
####サーバーの
インポートソケット
読み込み時間
SK = socket.socket()

#bindメソッドこの文章を追加する前に、あなたは、ポートの再利用を行うことができます
sk.setsockopt(socket.SOL_SOCKET、socket.SO_REUSEADDR、1) ネットワークホストに登録)#バインドアドレスポート
sk.bind(( "127.0.0.1"、9000))
sk.listen()

CONN、SK addrに= .accept()
conn.send( "00000120" .encode( "UTF-8"))
メッセージ= "こんにちは、"* 20
conn.send(message.encode( "UTF-8"))
#1 time.sleep(0.1)
conn.send( "世界" .encode( "UTF-8")) 

四次挥手
はconn.close() 退还端口
sk.close()

####客户端
インポートソケット
インポート時間
SK = socket.socket()
sk.connect(( "127.0.0.1"、9000))

#1 time.sleep(0.2)
RES0 = INT(SK。 RECV(8).decode( "UTF-8"))#1 RES0 "6" 
プリント(RES0)
RES1 = sk.recv(RES0)
プリント(RES1) プリント(res1.decode( "UTF-8"))
RES2 = sk.recv(10)
印刷(RES2)
SK。使用閉じます() 
----------------------------------------------- ------------------------------------------------- 
# ###サーバーの
インポートソケット
のインポート構造体

socket.socket = SK()
sk.setsockopt(socket.SOL_SOCKET、socket.SO_REUSEADDR ,. 1)
sk.bind(( "127.0.0.1"、9000))
sk.listen()

コネチカット、ADDR = sk.accept()
のInP INPUT =(「>>> MSG:」)
(「UTF-8」)MSG = inp.encode 
の固定長の4バイトに、パックによって変換された送信データ#1の長さの値
RES = struct.pack ( "I"、LEN(MSG))

conn.send(RES)
次に、実際の送信データ開始
conn.sendを(MSG)
conn.send( "世界" .encode( "UTF-8"))

RES = conn.recv(1024)
印刷(RES)
を印刷(res.decode( "UTF-8")) 第四の波
はconn.close() ポート返金
SKを。クローズ() 

####客户端
インポートソケット
インポート構造体
インポート時間
SK = socket.socket()
sk.connect(( "127.0.0.1"、9000))
time.sleep(0.1)
受け入れ#4バイト長、彼が実際に変換に送信する数である。
N-sk.recv =(4)
N- = struct.unpack( "I"、N-)[0] 
印刷(N-) 
は、次のサーバから送信されたデータ受信
RES1 = sk.recv(N-)
プリント(res1.decodeを( "UTF-8"))
RES2 = sk.recv(1024)
印刷(res2.decode( "UTF-8")) 
スペースではないASCIIエンコーディング、注意。
sk.send(B "i_love_you") 
は、接続クローズ
sk.closeを()

  

おすすめ

転載: www.cnblogs.com/huangjiangyong/p/10960947.html