소켓 서버 | 소켓 클라이언트 -> 패키지 끈적 현상

# ### 서버 
가져 오기 소켓 
가져 오기 시간 
SK = socket.socket () 

# 바인드 방법 전에이 문장을 추가, 당신은 포트를 재사용 할 수 
sk.setsockopt을 (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
# 타이 어드레스 (네트워크에 등록 된 호스트) 포트 세트 
sk.bind (( "127.0.0.1", 9000)) 
sk.listen () 

코네티컷, ADDR sk.accept = () 
conn.send를 ( ". 6"함수 .encode ( "UTF -11 ")) 
메시지 ="안녕하세요 " 
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)) 

#에 time.sleep (0.2)
이 res0 = INT (sk.recv. (1) .decode ( "UTF-. 8"))의 #이 res0. "6" 
인쇄 (이 res0) 
RES1 = sk.recv (이 res0) 
인쇄 (RES1) 
# 전단 (res1.decode ( "UTF -11 ")) 
RES2 = sk.recv (10) 
전단 (RES2) 
sk.close () 
---------------------------- -------------------------------------------------- ---------------- 
# ### 서버 
가져 오기 소켓 
가져 오기 시간 
SK = socket.socket () 

바인드 방법 전에 #이 문장을 추가, 당신은 포트 재사용을 할 수 있습니다 
sk.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR 1) 
(네트워크에 등록 된 호스트) # 바인드 어드레스 포트 
sk.bind (( "127.0.0.1", 9000)) 
sk.listen () 

CONN, SK = 요지 .accept () 
conn.send ( "00000120"함수 .encode ( "UTF-. 8")) 
메시지 = "안녕하세요"* 20
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)) 

#의 time.sleep (0.2) 
이 res0 = INT (SK. RECV (8) .decode ( "UTF-8"))이 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 바이트에, 팩으로 변환 된 송신 데이터 #의 길이 값 
입술 = 다음 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") 
# 4 차 
conn.Close () 
# 환불 포트 
sk.close () 

# ### 클라이언트 
가져 오기 소켓 
가져 오기 구조체 
시간 가져 오기  
SK = socket.socket ()
SK.연결 (( "127.0.0.1", 9000))
(0.1)을 time.sleep 
# 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 ")) 

아스키 코드보다 더 # 공간, 우리는주의를 기울이십시오. 
sk.send를 (B"i_love_you ") 

#은 연결 닫습니다 
sk.close을 ()

  

추천

출처www.cnblogs.com/huangjiangyong/p/10960947.html