Python 네트워크 프로 그래 밍 상세 설명

1.서버 는 일련의 하드웨어 나 소프트웨어 로 하나 이상 의 클 라 이언 트(서비스의 사용자)에 게 필요 한'서비스'를 제공 합 니 다.클 라 이언 트 의 요청 을 기다 리 고 응답 하 며 더 많은 요청 을 기다 리 는 유일한 목적 이 존재 합 니 다.
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 대상 의 묘 한 설명등 문제 가 있 으 면 언제든지 메 시 지 를 남 겨 주세요.문제 가 있 으 면 고 치 겠 습 니 다.

좋은 웹페이지 즐겨찾기