python 클 라 이언 트 와 서버 의 통신 실현

함수 소개
Socket 대상 방법:
서버:
함수.
묘사 하 다.
.bind()
귀속 주소 키워드,AFINET 아래 에 원 그룹 으로 주 소 를 표시 합 니 다.상용 bind(host,port)
.listen()
TCP 를 감청 하면 걸 수 있 는 최대 연결 수 입 니 다.이 값 은 최소 1 이 고 보통 5 로 설정 하면 됩 니 다.
.accept()
TCP 클 라 이언 트 의 연결 을 수 동적 으로 받 아들 입 니 다.
클 라 이언 트:
함수.
묘사 하 다.
.connect()
서버 연결 초기 화
.connect_ex()
connect()함수 에 대한 확장 입 니 다.오류 가 발생 했 을 때 오류 코드 를 되 돌려 주 고 이상 을 알 리 지 않 습 니 다.
다른 함수:
함수.
묘사 하 다.
.recv()
데 이 터 를 받 습 니 다.데 이 터 는 문자열 로 되 돌아 갑 니 다.bufsize 는 받 은 최대 데 이 터 를 지정 합 니 다.
.send()
데 이 터 를 보 내 고 string 의 데 이 터 를 연 결 된 소켓 에 보 냅 니 다.반환 값 은 보 낼 바이트 의 수량 입 니 다.보통'encode()함수 로 데 이 터 를 변환 합 니 다.
.senddall()
전체 데 이 터 를 보 내 고 되 돌아 오기 전에 모든 데 이 터 를 보 내 려 고 시도 합 니 다.None 으로 돌아 가 는 데 성공 하면 실 패 했 을 때 이상 을 던 집 니 다.
.recvfrom()
recv()함수 와 유사 합 니 다.다른 것 은 반환 값(data,address)입 니 다.그 중에서 data 는 데 이 터 를 받 는 문자열 을 포함 하고 address 는 데 이 터 를 보 내 는 소켓 주소 입 니 다.
.sendto()
UDP 데 이 터 를 보 내 고 소켓 에 데 이 터 를 보 냅 니 다.형식 은(ipaddr,port)의 원본 그룹 입 니 다.
.close()
소켓 닫 기
서버
socket 함 수 를 사용 하여 socket 대상 을 만 들 고 socket 서 비 스 를 설정 한 다음 bid(hostname,port)함 수 를 통 해 포트 를 지정 합 니 다.socket 대상 의 accept 방법 을 사용 하여 클 라 이언 트 의 연결 을 기다 리 고 connection 대상 을 되 돌려 줍 니 다.
구체 적 인 절 차 는:

        
serversocket=socket()
         
serversocket.bind()
       
serversocket.listen()
    while    ,         
while True:
 serverclient=serversocket.accept()
 while True:
   #     
   serverclient.recv()
   serverclient.send()
   #        
   serverclient.close()
        
serversocket.close()
구체 적 인 코드 구현:

import socket
import sys
import time

serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()#       
port=9999
#     
serversocket.bind((host,port))

#       
serversocket.listen(5)
while True:
  print('     ,       ')
  clientsocket,addr=serversocket.accept()
  print('    :%s' % str(addr))
  while True:
    try:
      data=clientsocket.recv(1024)
    except Exception:
      print('      :',addr)
      break
    print('       :',data.decode('utf-8'))
    reply=input('  :').strip()
    if not reply:
      break
    msg=time.strftime('%Y-%m-%d %X')#        
    msg1='[%s]:%s'% (msg,reply)
    clientsocket.send(msg1.encode('utf-8'))
  clientsocket.close()
serversocket.closel()
실현 기능:while 를 통 해 클 라 이언 트 가 보 낸 데 이 터 를 순환 적 으로 수신 하고 클 라 이언 트 가 보 낸 데 이 터 를 표시 하고 클 라 이언 트 에 게 데 이 터 를 되 돌려 주 며 클 라 이언 트 에 게 보 낸 데이터 정 보 를 되 돌려 주 고 시간 스탬프 를 추가 합 니 다.
클 라 이언 트
이상 의 서 비 스 를 연결 하 는 클 라 이언 트 를 만 듭 니 다.socket.connect()방법 으로 TCP 연결 을 호스트 에 열 고 연결 하면 서버 에서 데 이 터 를 가 져 와 작업 이 끝 난 후에 연결 을 닫 을 수 있 습 니 다.구체 적 인 절 차 는'`클 라 이언 트 를 만 드 는 소켓 client=socket()서버 client.connect()에 연결 하여 데 이 터 를 보 내 고 받 으 려 고 시도 합 니 다 client.send()client.recv()클 라 이언 트 소켓 client.close()``*구체 적 인 코드 구현:***

import socket
import sys


s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()
port=9999
s.connect((host,port))
while True:
  data= input('>>').strip()
  if not data:
    break
  s.send(data.encode('utf-8'))
  msg=s.recv(1024)
  if not msg:
    break
  print(msg.decode('utf-8'))
s.close()
테스트
cmd 명령 행 을 사용 하여 코드 가 있 는 파일 디 렉 터 리 를 열 고 python 서버 파일 이름.py 를 실행 하고 cmd 명령 인터페이스 를 열 어 python 클 라 이언 트 파일 이름.py 를 실행 합 니 다.
pycharm 에서 서버 코드 를 실행 합 니 다.실행 결과:

cmd 에서 클 라 이언 트 코드 를 실행 합 니 다.실행 결과:

이상 은 python 이 클 라 이언 트 와 서버 의 통신 을 실현 하 는 상세 한 내용 입 니 다.python 클 라 이언 트 와 서버 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기