day19 네트워크 프로그래밍 및 다중 스레드

3379 단어
1. 서버
1.1 socket이란?
cket은 플러그인이라고도 하는데 네트워크 통신의 양쪽을 가리킨다. 각각 서버와 클라이언트 socket 프로그래밍은 코드를 통해 클라이언트와 서버 간의 통신을 실현하는 것을 말한다
1.2 서버 구현
1.2.1 소켓 객체 만들기
family: ip 형식,AFINET -> ipv4, AF_INET6 -> ipv6 type: 전송 프로토콜의 유형, SOCKSTREAM -> TCP, SOCK_DGRAM -> UDP server = socket.socket()
1.2.2 IP 주소 및 포트 바인딩
**ip는 인터넷상의 설비 포트를 구분하는데 한 대의 계산상의 서로 다른 서비스(응용)를 구분하는데 값은 0-65535이고 그 중에서 0-1024는 유명한 포트이다.다른 거 아무거나.
bind((ip주소, 포트 번호)**
server.bind(('10.7.190.127', 8081))
1.2.3 서버 시작(수신 요청)
listen(수량) - 여기 수량은 한꺼번에 처리할 수 있는 최대 요청수를 가리킨다
server.listen(255)
1.2.4 서버 가동 유지
while True:
    print('    ....')

1.2.5 클라이언트의 요청 대기
    #         ,    ,            ,        
    connect, addr = server.accept()
    print(connect, addr)

1.2.6 메시지 보내기
send(데이터) - 데이터를 보내고, 데이터는 이진 데이터입니다.
    message = input('>>>')
    connect.send(message.encode(encoding='utf-8'))

1.2.7 메시지 수신
recv(바이트수) - 데이터를 수신하고 일회성 수신 데이터의 최대 크기를 지정합니다.수신된 바이너리 데이터 반환
    #              ,             ,      
    data = connect.recv(1024)
    print('<<<: print=""/>

1.2.8 연결 해제
    connect.close()

2. 클라이언트
클라이언트 소켓 만들기
2.1 소켓 객체 작성
client = socket.socket()

2.2 서버 연결
connect((ip  ,   ))
client.connect(('10.7.190.127', 8080))

2.3 메시지 수신
data = client.recv(1024)
print('<<<: print=""/>

2.4 메시지 보내기
message = input('>>>:')
client.send(message.encode(encoding='utf-8'))

2.5 연결 해제
client.close()

3. 다중 스레드
import threading
from datetime import datetime, date, time
from time import sleep

3.1 프로세스란?
실행 중인 프로그램은 프로세스입니다.시스템은 모든 프로세스에 독립된 메모리 영역을 분배하여 프로그램 실행 과정에서 발생한 데이터를 저장하고 프로세스가 끝날 때 이 메모리 영역은 자동으로 삭제됩니다
3.2 스레드란?
프로세스가 작업을 수행하려면 라인이 있어야 합니다.모든 프로세스는 기본적으로 하나의 라인이 있는데, 이 라인을 주 라인이라고 한다.다른 스레드를 서브스레드라고 부르는 프로그램은 기본적으로 주 스레드에서 실행되는 한 스레드에서 여러 개의 작업을 수행합니다. 작업은 직렬로 실행됩니다. 한 프로세스에 여러 스레드가 있으면 여러 스레드가 서로 다른 작업을 수행할 때 병렬 (같은 시간에 실행)
3.3python에서 다중 루틴 사용 방법
python은 내장된threading 모듈을 통해 다중 루틴 관련 기술을 제공한다.그중에 Thread 클래스가 하나 있는데, 이 클래스의 대상이 바로 라인 대상이다
def download(film):

    print('    : %s  time: %s' % (film, str(datetime.now())))

    sleep(15)
    print('%s      time:%s' % (film, str(datetime.now())))
    print(threading.current_thread())

#            :        ,           ,           
# download('     ')
# download('     ')

3.4 라인 클래스를 직접 만드는 대상
a. 구문: 스레드 객체 = Thread(target=함수,args=매개 변수) - 스레드 객체를 만들고 반환합니다.b. 함수-function 유형의 변수를 설명한다.이 함수의 함수체는 서브라인에서 매개 변수 - 원조를 집행한다.매개 변수는 target에 대응하는 함수에 전달됩니다
t1 = threading.Thread(target=download, args=('    ',))
t2 = threading.Thread(target=download, args=('    ',))

3.5 스레드로 작업 시작
스레드 대상.start () - 하위 스레드의 작업을 시작합니다.
t1.start()
t2.start()
download('    ')
print('=======')
#         ,       ;       ,        ,      
print([1, 2][10])
print('+++++++++++')

좋은 웹페이지 즐겨찾기