백엔드 개발 파이썬 튜토리얼 Python의 소켓 네트워크 프로그래밍에 대한 자세한 소개(예제 포함)

Python의 소켓 네트워크 프로그래밍에 대한 자세한 소개(예제 포함)

Oct 13, 2018 pm 04:34 PM
python

이 기사는 Python의 소켓 네트워크 프로그래밍에 대한 자세한 소개를 제공합니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

네트워크 통신의 세 가지 요소

  • IP

전자 메일을 보내려면 상대방의 이메일 주소를 알아야 하는 것처럼 통신할 때 양측 모두 상대방의 신원을 알아야 합니다. 인터넷상의 모든 컴퓨터의 고유 식별자는 123.123.123.123과 유사한 IP 주소입니다.

IP 주소는 실제로 32비트 정수입니다(IPv4라고 함). 192.168.0.1과 같이 문자열로 표시되는 IP 주소는 실제로는 편의상 32비트 정수를 8비트로 그룹화하여 표시되는 숫자입니다. 독서의.
IPv6 주소는 실제로 128비트 정수로, 현재 사용되는 IPv4의 업그레이드 버전이며 문자열로 표시됩니다. 2001:0db8:85a3:0042:1000:8a2e:0370:7334 와 유사합니다.
  • port port

두 대의 컴퓨터가 통신할 때, 같은 컴퓨터에서 여러 개의 네트워크 프로그램이 실행되고 있기 때문에 단순히 IP 주소를 보내는 것만으로는 충분하지 않습니다. IP 패킷이 도착하면 브라우저 또는 QQ로 전달되는지 여부를 구별하기 위해 포트 번호가 필요합니다.

각 네트워크 프로그램은 운영 체제의 고유한 포트 번호를 적용합니다. 이러한 방식으로 두 컴퓨터 간에 네트워크 연결을 설정하려면 두 프로세스에 고유한 IP 주소와 해당 포트 번호가 필요합니다.

  • TCP/UDP 프로토콜

전 세계의 모든 종류의 컴퓨터를 연결하려면 일련의 글로벌 프로토콜을 지정해야 합니다. 인터넷 프로토콜을 TCP/IP 프로토콜

소켓이라고 합니다. 프로그래밍

소켓은 네트워크 프로그래밍의 추상적 개념입니다. 일반적으로 우리는 "네트워크 링크 열기"를 의미하기 위해 소켓을 사용하며, 소켓을 열려면 대상 컴퓨터의 IP 주소와 포트 번호를 알고 프로토콜 유형을 지정해야 합니다.

import socket
# socket.gethostname()当不传入参数时,返回本机主机名
print(socket.gethostname()) #DESKTOP-EN0LQJH

#域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称
#通过域名查找服务器IP地址
print(socket.gethostbyname('www.baidu.com'))    #119.75.216.20

#通过一个IPv4的地址来获取主机信息
print(socket.gethostbyaddr('114.114.114.114'))

#通过IP/port组合,访问服务器信息
# 如果是AF_INET则格式为:(address, port),如果为AF_INET6,则返回(address, port, flow info, scope id)

print(socket.getaddrinfo('www.xunlei.com',80))
로그인 후 복사

Python의 소켓 네트워크 프로그래밍에 대한 자세한 소개(예제 포함)

소켓을 사용하여 간단한 웹 서버 구현

import socket
def reply_info(socketObj):
    # socketObj.send('ok')
    with open('hello.html') as f:
        socketObj.send(f.read().encode('utf-8'))
if __name__=="__main__":
    #1. 创建socket对象
    socket_server = socket.socket()
    #2. 绑定IP和端口
    socket_server.bind(('192.168.1.165',9999))
    print("服务器端已经启动9999端口......")
    #3. 监听是否有客户端连接
    socket_server.listen(5)

    while True:
        # 4. 接受客户端的连接
        socket_client,address = socket_server.accept()
        # 5. 接收客户端发来的信息
        data = socket_client.recv(1024)
        # 6. 与客户端进行交互, 返回给客户端信息
        reply_info(socket_server)
        socket_server.close()
로그인 후 복사

위 내용은 Python의 소켓 네트워크 프로그래밍에 대한 자세한 소개(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek Xiaomi를 다운로드하는 방법 DeepSeek Xiaomi를 다운로드하는 방법 Feb 19, 2025 pm 05:27 PM

DeepSeek Xiaomi를 다운로드하는 방법

템플릿의 장점과 단점은 무엇입니까? 템플릿의 장점과 단점은 무엇입니까? May 08, 2024 pm 03:51 PM

템플릿의 장점과 단점은 무엇입니까?

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Jul 01, 2024 am 07:22 AM

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. 단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. May 06, 2024 pm 03:52 PM

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다.

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 May 06, 2024 pm 04:43 PM

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유

golang 함수 디버깅 및 분석에 대한 완벽한 가이드 golang 함수 디버깅 및 분석에 대한 완벽한 가이드 May 06, 2024 pm 02:00 PM

golang 함수 디버깅 및 분석에 대한 완벽한 가이드

당신은 그에게 Deepseek에게 어떻게 물어 봐요 당신은 그에게 Deepseek에게 어떻게 물어 봐요 Feb 19, 2025 pm 04:42 PM

당신은 그에게 Deepseek에게 어떻게 물어 봐요

평가 기능을 저장하는 방법 평가 기능을 저장하는 방법 May 07, 2024 am 01:09 AM

평가 기능을 저장하는 방법

See all articles