Python 은 socket 기반 으로 TCP/IP 클 라 이언 트 와 서버 통신 을 실현 합 니 다.
4598 단어 PythonTCP/IP거래처서버커 뮤 니 케 이 션
소켓 은 네트워크 주소 등 기능 을 분석 하 는 데 사용 되 는 것 외 에 도 서버 를 설정 하여 오 는 정 보 를 감청 할 수 있다.
예 를 들 어 인터넷 에서 인터넷 로봇 과 채 팅 을 하고 데 이 터 를 로봇(서버)에 보 낸 다음 에 로봇(서버)이 채 팅 데이터 정 보 를 피드백 한다.
물론 로봇 의 답장 내용 은 기계 학습 과 관련 이 있 을 수 있 지만 간단 한 소식 피드백 은 바로 소켓 의 지식 과 관련된다.
간단 한 서버 구축 과 클 라 이언 트
소켓 의 응용 을 알 았 으 니다음은 간단 한 단 방향 통신 TCP/IP 서버 와 클 라 이언 트 를 실현 합 니 다.
서버
서버 의 원 리 는 다음 과 같다.
예제 코드 는 다음 과 같다.
import socket
# 1. ,
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. bind()
sock.bind(('localhost', 10000))
# 3. listen()
sock.listen(1)
while True:
# 4. accept()
# , accept()
connection, client_address = sock.accept()
print(" :", client_address)
try:
# 5. , recv
data = connection.recv(1024)
print(data)
if data:
# 6. sendall() 。
connection.sendall(" ".encode())
else:
print(" , ")
finally:
#7. close()
connection.close()
클 라 이언 트클 라 이언 트 를 실현 하 는 것 은 상대 적 으로 서버 보다 훨씬 간단 합 니 다.감청 이 필요 없 기 때문에 연결 해서 데 이 터 를 보 내 면 됩 니 다.클 라 이언 트 구현 은 주로 다음 과 같 습 니 다.
4
import socket
# 1. ,
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. bind()
sock.connect(('localhost', 10000))
try:
msg = b"Are you there?"
# 3. sendall()
sock.sendall(msg)
# 4. recv()
data = sock.recv(1024)
print(data.decode())
finally:
# 5. , close()
sock.close()
실행 후 서버 와 클 라 이언 트 의 상호작용 효 과 는 다음 과 같 습 니 다.create_connection(더 쉬 운 클 라 이언 트)
연결 서버 는 connect()함 수 를 사용 하 는 것 외 에 다른 함수 create 가 있 습 니 다.connection()은 서버 를 연결 합 니 다.몇 가지 절 차 를 생략 할 수 있 습 니 다.예 는 다음 과 같다.
import socket
#
def getConstants(prefix):
return {
getattr(socket, n): n
for n in dir(socket)
if n.startswith(prefix)
}
ipproto_str = getConstants("IPPROTO_")
family_str = getConstants("AF_")
type_str = getConstants("SOCK_")
sock = socket.create_connection(('127.0.0.1', 10000))
print(ipproto_str[sock.proto])
print(family_str[sock.family])
print(type_str[sock.type])
try:
msg = b"Are you there?"
sock.sendall(msg)
data = sock.recv(1024)
print(data.decode())
finally:
sock.close()
실행 후 효 과 는 다음 과 같 습 니 다.create_connection()함수 의 원 리 는 getaddrinfo()함수 로 후보 연결 의 인 자 를 찾 고 열 린 socket 을 되 돌려 주 는 것 입 니 다.getaddrinfo()함수 의 설명 내용 은 이전 socket 라 이브 러 리(클릭 하여 점프 하여 보기)에 있 습 니 다.
파 이 썬 이 socket 을 기반 으로 TCP/IP 클 라 이언 트 와 서버 통신 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 TCP/IP 클 라 이언 트 와 서버 통신 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.