파이썬 소켓 프로그래밍에

1. 소켓은 무엇인가?

  소켓이 밀접하게 전송 계층에 관련되는 동안 소켓 소켓, 우리는 TCP / IP 프로토콜 제품군 시스템을 영어 이름을 알고있다, 상태, 그래서 네 개의 상태 네트워크 응용 프로그램 계층, 전송 계층, 네트워크 계층, 물리 계층으로 구분된다 프로토콜의 주요 성과는 TCP와 UDP입니다. 투 엔드 통신 수송층 따라서, 전송 계층 각각의 연결은 두 단부를 갖는다. 그래서, 무슨 전송 계층 연결 엔드 포인트입니까? 아니 호스트 가 아닌 호스트의 IP 주소 가 아닌 응용 프로그램 프로세스도는 전송 계층 프로토콜 포트입니다. 전송 계층 연결 엔드 포인트라는 소켓 (소켓). RFC793의 정의에 따르면 : 포트 번호는 소켓의 IP 주소를 형성하기 위해 접합. 소위 소켓 실제로 통신 엔드 포인트이고, 각각의 소켓은 소켓 번호, 호스트의 IP 주소가 16 비트 호스트 포트 번호, 즉 형태를 포함하는 (호스트 IP 주소 : 포트 번호) . IP 주소 210.37.145.1이며, 예를 들어 포트 번호는 소켓 (210.37.145.1:23) 얻어진다 (23).
요컨대, 소켓 = 소켓 (IP 주소 : 포트 번호), 소켓 표현 콜론 또는 쉼표로 구분하여, 소수점의 상부 포트의 IP 주소 뒤에 기록된다. 통신의 고유 양단 각 수송층 접속 엔드 포인트 (즉, 두 개의 소켓)이 결정된다.
소켓은 통신 네트워크에서의 두 끝점 애플리케이션 각각의 통신 접속으로 간주 될 수있다. 네트워크 어플리케이션이 소켓 호스트 소켓 소켓을 기록에 송신하는 상기 정보 통신의 부분이 다른 호스트의 네트워크 인터페이스 카드에 전송 매체를 통해 정보를 송신되도록 정보 다른 프로그램에 전달 될 수있다. 따라서, 둘 사이의 데이터 전송 어플리케이션 소켓을 통해 달성된다.
TCP / IP는 운영 체제의 핵심에 캡슐화되어 있기 때문에 응용 프로그램이 TCP / IP를 사용하는 경우 웹 응용 프로그램의 설계에서, 시스템은 프로그래밍 인터페이스를 구현하기 위해 TCP / IP에 의해 제공 될 수있다. Windows 환경에서 네트워크 응용 프로그램 프로그래밍 인터페이스는 윈도우 소켓을했다. 응용 프로그램 중심의 통신 프로그램을 개발하는 사용자를 지원하기 위해, 대부분의 시스템은 TCP 나 UDP 기반 응용 프로그램 프로그래밍 인터페이스 (API를) 세트를 제공하는이 인터페이스는 함수의 집합의 형태로 일반적으로, 또한 소켓 (소켓이라 ).

1. 소켓 프로그래밍 흐름도 실질적

     

 2. 소켓과 멀티 스레드 채팅 스레드 통신을 사용하여

  서버 측 :

수입 소켓 
수입 스레딩 

HOST, PORT = " 로컬 호스트 " , 8020 개 
주소 = (HOST, PORT) 

# socket.AF_INET IPV4代表, socket.AF_INET6代表IPV6 
# socket.SOCK_STREAM代表TCP, SOCK_DGRAM代表UDP 
서버 = socket.socket (소켓. AF_INET, socket.SOCK_STREAM) 
server.bind (어드레스) 

server.listen () 

데프 handlesock (양말, ADDR) 
    동안 참 : 
        데이터 = sock.recv ( 1024 ) .decode ( " UTF-8 " )
         의 경우 == 데이터 " 종료 ":
             브레이크 
        (인쇄 " 메시지 내용 인의 클라이언트로부터 [{0}]. {} 1] " .format (ADDR, 데이터)) 
        응답 = 입력 ( " \ T [{0}] 응답 " . . 형식 (ADDR)) 인코딩 ( " UTF8 " ) 
        sock.send (응답) 

그동안 참 : 
    우리 양말, ADDR = server.accept () 
    cur_sock = threading.Thread (목표 = handlesock, 인수의 = (로모 양말, ADDR)) 
    cur_sock. () 시작

 

  클라이언트 :

소켓 가져 오기 

클라이언트 = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
client.connect는 (( " 로컬 호스트 " , 8020 )) 

그동안 참 : 
    응답 = 입력이 ( " 서버 응답 : " ) 함수 .encode ( " UTF8 " ) 
    클라이언트. (대응에게) 송신 
    IF 응답 == " 종료 " :
         BREAK 
    데이터 = client.recv ( 1024 ) .decode ( " UTF8 " ) 
    인쇄 ( " 메시지가 서버로부터 수신된다 : %의 S를 "%의 데이터) 

client.close ()

  설명 :

추천

출처www.cnblogs.com/kisun168/p/11221420.html