> 백엔드 개발 > 파이썬 튜토리얼 > Python 네트워크 프로그래밍: 간단한 소켓 서버 구현

Python 네트워크 프로그래밍: 간단한 소켓 서버 구현

王林
풀어 주다: 2023-06-18 08:47:33
원래의
3295명이 탐색했습니다.

Python은 매우 인기 있는 프로그래밍 언어입니다. 여기에는 네트워크 프로그래밍을 포함하여 다양한 프로그래밍 작업을 수행하는 데 사용할 수 있는 강력한 라이브러리와 도구가 많이 포함되어 있습니다. Python은 웹 애플리케이션 작성을 위한 많은 라이브러리와 도구를 제공합니다. 가장 일반적으로 사용되는 것은 소켓 라이브러리입니다.

이 글에서는 Python 소켓 라이브러리를 사용하여 간단한 소켓 서버를 작성하는 방법을 소개합니다. 소켓의 개념과 소켓 서버의 구현 과정을 자세히 설명하고 코드 예제를 제공합니다.

1. 소켓 개념

소켓은 네트워크에서 통신하는 데 사용되는 추상화 계층입니다. TCP/IP 프로토콜 스택을 기반으로 구현됩니다. 간단히 말해서, 소켓은 네트워크상의 두 응용 프로그램 간의 통신을 허용하는 네트워크 통신용 인터페이스입니다.

소켓은 일반적으로 두 부분으로 나눌 수 있습니다. 하나는 서버 측이고 다른 하나는 클라이언트 측입니다. 서버는 네트워크의 특정 포트를 수신하고 클라이언트의 연결 요청을 기다리는 프로그램입니다. 클라이언트는 서버에 대한 연결 요청을 시작하는 프로그램입니다. 클라이언트와 서버가 연결되면 네트워크를 통해 데이터를 전송할 수 있습니다.

2.소켓 서버 구현

먼저 간단한 소켓 서버를 구현하겠습니다. 서버는 포트 번호를 수신하고 클라이언트 연결 요청을 기다립니다. 연결이 설정되면 서버는 클라이언트가 보낸 메시지를 수락하고 이를 콘솔에 인쇄합니다.

1단계: 소켓 서버 만들기

Python 소켓 라이브러리를 사용하여 서버 소켓을 만들 수 있습니다. 서버 소켓은 지정된 포트와 IP 주소에 바인딩되어 클라이언트 연결 요청을 수신합니다.

import socket

HOST = '127.0.0.1'
PORT = 5555

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(1)
print('Waiting for connection...')
로그인 후 복사

이 코드 조각에서는 먼저 소켓 개체를 생성하고 이를 지정된 IP 주소와 포트 번호에 바인딩합니다. 그런 다음 클라이언트의 연결 요청을 기다리기 위해 Listen() 메서드를 호출했습니다. 이 시점에서 서버는 클라이언트의 요청을 수락할 준비가 되었습니다.

2단계: 클라이언트 연결 대기

서버가 클라이언트 연결을 수락할 준비가 되면 accept() 메서드를 사용하여 클라이언트 요청이 도착할 때까지 기다릴 수 있습니다. 클라이언트가 연결을 요청하면 accept() 메서드는 클라이언트와 통신하는 데 사용할 수 있는 새 소켓 개체를 반환합니다.

while True:
    client_socket, addr = server_socket.accept()
    print('Connection from:', addr)
로그인 후 복사

이 코드 조각에서는 while 루프를 사용하여 클라이언트가 연결될 때까지 기다립니다. 클라이언트가 연결을 요청하면 accept() 메서드는 새 소켓 객체와 클라이언트의 IP 주소 및 포트 번호를 반환합니다. 우리는 새로운 소켓 객체를 클라이언트 소켓이라고 부르고 클라이언트의 주소 정보를 출력합니다.

3단계: 클라이언트와 통신

클라이언트와 연결이 설정되면 recv() 메서드를 사용하여 클라이언트가 보낸 데이터를 수신한 다음 콘솔에 인쇄할 수 있습니다.

while True:
    client_socket, addr = server_socket.accept()
    print('Connection from:', addr)

    while True:
        data = client_socket.recv(1024)
        if not data:
            break
        print('Received message:', data.decode())

    client_socket.close()

server_socket.close()
로그인 후 복사

이 코드 조각에서는 먼저 클라이언트와의 연결을 설정하고 클라이언트로부터 모든 메시지를 수신하기 위해 순회합니다. 우리는 클라이언트가 보낸 데이터를 수신하고 콘솔에 인쇄하기 위해 recv() 메서드를 사용합니다. 클라이언트가 데이터를 보내지 않으면 내부 루프를 종료하고 클라이언트 소켓을 닫습니다.

마지막으로 서버 소켓을 닫아야 합니다.

3. 전체 코드 예시

import socket

HOST = '127.0.0.1'
PORT = 5555

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(1)
print('Waiting for connection...')

while True:
    client_socket, addr = server_socket.accept()
    print('Connection from:', addr)

    while True:
        data = client_socket.recv(1024)
        if not data:
            break
        print('Received message:', data.decode())

    client_socket.close()

server_socket.close()
로그인 후 복사

4. 요약

이번 글에서는 Python 소켓 라이브러리의 사용법을 설명하고, 소켓의 개념을 소개했으며, Python 소켓 라이브러리를 사용하여 간단한 소켓 서버를 구현하는 방법을 설명했습니다. 이 기사가 독자들이 소켓의 구현 원리를 이해하는 데 도움이 되고 독자들이 네트워크 프로그래밍에 Python을 사용할 때 도움이 되기를 바랍니다.

위 내용은 Python 네트워크 프로그래밍: 간단한 소켓 서버 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿