Python 네트워크 프로 그래 밍 상세 설명
5175 단어 python네트워크 프로 그래 밍
2.클 라 이언 트/서버 구 조 는 컴퓨터 하드웨어 에 도 응용 할 수 있 고 컴퓨터 소프트웨어 에 도 응용 할 수 있다.
3.서버 가 클 라 이언 트 에 응답 하기 전에 먼저 통신 노드 를 만 들 고 서버 가 요청 을 감청 할 수 있 습 니 다.
통신 점
1.소켓
소켓 은 컴퓨터 네트워크 데이터 구조 로 지난 절 에서 묘사 한'통신 점'의 개념 을 나 타 냈 다.모든 종류의 통신 이 시작 되 기 전에 네트워크 프로그램 은 소켓 을 만들어 야 합 니 다.
파일 기반 과 네트워크 지향 두 가지 유형의 소켓 이 있 습 니 다.
2.소켓 주소:호스트-포트
만약 하나의 소켓 이 전화 플러그 인-통신 을 허용 하 는 인 프 라 시설 과 같다 면 호스트 이름과 포트 번 호 는 지역 번호 와 전화번호 의 조합 과 같다.유효한 포트 번호 범 위 는 0-65535(1024 이하 의 포트 번 호 는 시스템 에 미리 남 겨 두 었 습 니 다)
3.연결 을 위 한 소켓 과 연결 되 지 않 은 소켓
연결 을 위해 서 는 통신 을 하기 전에 연결 을 만들어 야 합 니 다.이러한 연결 형식 을 실현 하 는 주요 프로 토 콜 은 TCP(전송 제어 프로 토 콜)입 니 다.
연결 이 없 으 면 통신 하기 전에 연결 을 만 들 필요 가 없습니다.주요 프로 토 콜 은 UDP(사용자 데이터 보고 프로 토 콜)
2.Python 의 네트워크 프로 그래 밍
1.socket()모듈 함수
TCP/IP 소켓 만 들 기:tcp Sock=socket.socket(socket.AFINEF,socket.SOCK_STREAM)
UDP/IP 소켓 만 들 기:udpSock=socket.socket(socket.AFINET,socket.SOCK_DGRAM)
2.흔히 볼 수 있 는 소켓 대상 방법 과 속성
명칭.
묘사 하 다.
서버 소켓 방법
s.bind()
소켓 에 주소(호스트 이름,포트 번호 쌍)를 연결 합 니 다.
s.listen()
TCP 모니터 설정 및 시작
s.accept()
TCP 클 라 이언 트 연결 을 수 동적 으로 받 아들 여 연결 이 도착 할 때 까지 기 다 립 니 다(차단)
클 라 이언 트 소켓 방법
s.connect()
TCP 서버 연결 을 주동 적 으로 시작 합 니 다.
s.connect_ex()
connect 의 확장 버 전 은 오류 코드 로 문 제 를 되 돌려 줍 니 다.이상 을 던 지 는 것 이 아 닙 니 다.
일반적인 소켓 방법
s.recv()
TCP 메시지 받 기
s.send()
TCP 메시지 보 내기
s.sendall()
TCP 메시지 완전 발송
s.recvfrom()
UDP 메시지 수신
s.shutdown()
연결 닫 기
s.close()
소켓 닫 기
3.TCP 서버 생 성
ss = socket() #
ss.bind() #
ss.listen() #
inf_loop: #
cs = ss.accept() #
comm_loop: #
cs.recv()/cs.send() # ( 、 )
cs.close() #
ss.close() # ( )
#!/usr/bin/env python
#TCP
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print('waiting for connecting...')
tcpClisock, addr = tcpSerSock.accept()
print('...connected from:',addr)
while True:
data = tcpClisock.recv(BUFSIZ)
if not data:
break
tcpClisock.send('[%s] %s' % (bytes(ctime(),'utf-8'),data))
tcpClisock.close()
tcpSerSock.close()
4.TCP 클 라 이언 트 만 들 기
cs = socket()
cs.connect()
comm_loop:
cs.send()/cs.recv()
cs.close()
#!/usr/bin/env python
#TCP
from socket import *
HOST = '127.0.0.1'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
tcpClisock = socket(AF_INET,SOCK_STREAM)
tcpClisock.connect(ADDR)
while True:
data = input('> ')
if not data:
break
tcpClisock.send(data)
data = tcpClisock.recv(BUFSIZ)
if not data:
break
print(data.decode('utf-8'))
tcpClisock.close()
5、UDP 서버 생 성
ss = socket()
ss.bind()
inf_loop:
cs = ss.recvfrom()/ss.sendto()
ss.close()
#!/usr/bin/env python
#UDP
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
print('waiting for message...')
data, addr=udpSerSock.recvfrom(BUFSIZ)
udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)
print('...received from and returned to:',addr)
udpSerSock.close()
6、UDP 클 라 이언 트 만 들 기
cs = socket()
comm_loop:
cs.send()/cs.recvfrom()
cs.close()
#!/usr/bin/env python
#UDP
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
udpClisock = socket(AF_INET,SOCK_DGRAM)
while True:
data = input('> ')
if not data:
break
udpClisock.sendto(data,ADDR)
data, ADDR=udpClisock.recvfrom(BUFSIZ)
if not data:
break
print(data)
udpClisock.close()
이상 은 Python 네트워크 프로 그래 밍 에 관 한 상세 한 내용 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.참고:Python 에서 enumerate 함수 코드 분석,python 데이터 형식 판단 type 과 isinstance 의 차이 사례 분석,python 에서 requests 라 이브 러 리 session 대상 의 묘 한 설명등 문제 가 있 으 면 언제든지 메 시 지 를 남 겨 주세요.문제 가 있 으 면 고 치 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.