찾다
백엔드 개발파이썬 튜토리얼Python 네트워크 프로그래밍

Python 네트워크 프로그래밍

Nov 01, 2016 pm 01:18 PM
python

소켓 이해

소켓은 일반적으로 "소켓"이라고도 하며, IP 주소와 포트를 설명하는 데 사용됩니다. 애플리케이션은 일반적으로 "소켓"을 통해 네트워크에 요청합니다. " 또는 네트워크 요청에 응답합니다.

소켓은 Unix에서 유래되었으며 Unix/Linux의 기본 철학 중 하나는 "모든 것이 파일이다"입니다. 파일의 경우 [열기] [읽기 및 쓰기] [닫기] 모드를 사용하여 작동합니다. 소켓은 이 모드의 구현입니다. 소켓은 특수 파일입니다. 일부 소켓 기능은 이에 대한 작업입니다(읽기/쓰기 IO, 열기, 닫기)

소켓과 파일의 차이점:

파일 모듈은 지정된 파일에 대해 [열기] [읽기 및 쓰기] [닫기]에 사용됩니다.

소켓 모듈은 서버 측 및 파일에 대해 [열기] [읽기 및 쓰기] [닫기]에 사용됩니다. 클라이언트 측 소켓.

Python 네트워크 프로그래밍


ython(버전 3.5)은 가장 간단한 소켓 통신을 구현합니다.

#!/usr/bin/env python
# coding=utf-8
# Author:Majh

import socket

ip_port = ('127.0.0.1', 9999)
sk = socket.socket()

sk.connect(ip_port)
send_data = input('>>').strip()
sk.send(bytes(send_data, encoding='utf-8'))
recv_data = sk.recv(1024)
print(str(recv_data, encoding='utf-8'))
sk.close()

客户端代码
#!/usr/bin/env python
# coding=utf-8
# Author:Majh

import socket

sk = socket.socket()
ip_port = ('127.0.0.1', 9999)

sk.bind(ip_port)
print('sk.bind......')
sk.listen(5)
print('sk.listen......')
conn, addr = sk.accept()
print('conn:', conn)
print('addr:', addr)

read_data = conn.recv(1024)
print('read_data', read_data)
read_data = read_data.upper()

conn.send(read_data)
conn.close()

服务器端代码

socket 키워드 매개변수:

sk = 소켓.socket(socket.AF_INET,socket.SOCK_STREAM,0)

매개변수 1: 주소 클러스터

 socket.AF_INET IPv4(기본값) )
소켓.AF_INET6 IPv6

소켓.AF_UNIX는 단일 Unix 시스템의 프로세스 간 통신에만 사용할 수 있습니다.

매개변수 2: 유형

소켓.SOCK_STREAM 스트리밍 소켓, TCP(기본값)
소켓.SOCK_DGRAM 데이터그램 소켓, UDP

소켓.SOCK_RAW 원시 소켓. 일반 소켓은 ICMP 및 IGMP와 같은 네트워크 메시지를 처리할 수 없지만 SOCK_RAW는 다음과 같습니다. 또한 원시 소켓을 사용하여 특수 IPv4 메시지를 처리할 수 있으며 IP_HDRINCL 소켓 옵션을 통해 사용자가 IP 헤더를 구성할 수 있습니다.
Socket.SOCK_RDM은 신뢰할 수 있는 UDP 형식으로 데이터그램 전달을 보장하지만 순서를 보장하지는 않습니다. SOCK_RAM은 원래 프로토콜에 대한 낮은 수준의 액세스를 제공하는 데 사용되며 ICMP 메시지 전송과 같은 특정 특수 작업을 수행해야 할 때 사용됩니다. SOCK_RAM은 일반적으로 고급 사용자나 관리자가 실행하는 프로그램으로 제한됩니다.
 socket.SOCK_SEQPACKET 안정적인 연속 패킷 서비스

파라미터 3: 프로토콜

 0 (기본값) 특정 주소 계열과 관련된 프로토콜이 0인 경우 시스템은 주소 형식과 소켓 카테고리를 선택하면 적절한 프로토콜이 자동으로 선택됩니다.

sk.bind(address)

 s.bind(address) 소켓을 주소에 바인딩합니다. 주소 형식은 주소 계열에 따라 다릅니다. AF_INET에서는 주소가 튜플(호스트, 포트) 형식으로 표현됩니다.

sk.listen(backlog)

들어오는 연결 듣기를 시작합니다. 백로그는 연결이 거부되기 전에 보류할 수 있는 최대 연결 수를 지정합니다.

백로그는 5이며, 이는 커널이 연결 요청을 받았지만 서버가 처리를 위해 아직 수락을 호출하지 않았음을 나타냅니다.
연결 대기열이 있기 때문에 이 값은 무한할 수 없습니다.

sk.setblocking(bool)

차단 여부(기본값 True), False로 설정하면 수락 및 수신 중에 데이터가 없으면 오류가 보고됩니다.

sk.accept()

연결을 수락하고 (conn, 주소)를 반환합니다. 여기서 conn은 데이터를 주고받는 데 사용할 수 있는 새로운 소켓 객체입니다. address는 클라이언트에 연결하기 위한 주소입니다.

 TCP 클라이언트로부터 연결을 받고(차단) 연결이 도착할 때까지 기다립니다.

sk.connect(address)

 주소에 있는 소켓에 연결합니다. 일반적으로 주소 형식은 튜플(호스트 이름, 포트)입니다. 연결 오류가 발생하면 소켓.오류 오류가 반환됩니다.

sk.connect_ex(address)

위와 동일하지만 반환 값이 있다는 점만 제외하면 연결 성공 시 0이 반환되고 연결 실패 시 코드가 반환됩니다. 예: 10061

sk.close()

소켓을 닫습니다

sk.recv(bufsize[,flag])

소켓 데이터를 수락합니다. 데이터는 문자열로 반환되며, bufsize는 수신할 수 있는 최대 개수를 지정합니다. 플래그는 메시지에 대한 추가 정보를 제공하며 일반적으로 무시할 수 있습니다.

sk.recvfrom(bufsize[.flag])

recv()와 유사하지만 반환 값은 (데이터, 주소)입니다. 여기서 data는 수신된 데이터를 포함하는 문자열이고, address는 데이터가 전송되는 소켓 주소입니다.

sk.send(string[,flag])

문자열로 된 데이터를 연결된 소켓으로 보냅니다. 반환 값은 보낼 바이트 수이며 문자열의 바이트 크기보다 작을 수 있습니다. 즉, 지정된 모든 콘텐츠가 전송되지 않을 수 있습니다.

sk.sendall(string[,flag])

연결된 소켓으로 문자열의 데이터를 전송하지만 반환되기 전에 모든 데이터를 전송하려고 시도합니다. 성공하면 None을 반환하고, 실패하면 예외를 발생시킵니다.

내부적으로 send를 재귀적으로 호출하여 모든 콘텐츠를 보냅니다.

sk.sendto(string[,flag],address)

소켓으로 데이터를 보냅니다. address는 (ipaddr, port) 형식의 튜플이며 원격 주소를 지정합니다. 반환 값은 전송된 바이트 수입니다. 이 기능은 주로 UDP 프로토콜에 사용됩니다.

sk.settimeout(timeout)

소켓 작업의 시간 초과 기간을 설정합니다. 시간 초과는 초 단위의 부동 소수점 숫자입니다. 없음 값은 시간 초과 기간이 없음을 의미합니다. 일반적으로 타임아웃 기간은 소켓이 생성될 때 설정해야 합니다. 연결 작업에 사용될 수 있기 때문입니다(예: 클라이언트 연결 최대 5초 대기)

sk.getpeername()

연결 소켓을 반환합니다. 인터페이스의 원격 주소입니다. 반환 값은 일반적으로 튜플(ipaddr, port)입니다.

sk.getsockname()

소켓 자체 주소를 반환합니다. 일반적으로 튜플(ipaddr,port)


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

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까?Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까?Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.