python3 중 Socket 학습
서버 측:
# -*- coding: cp936 -*-
##tcp , , ip , 'I get it!' , 。
##@
import socket,traceback
host=''
port=12345
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)
while 1:
try:
clientsock,clientaddr=s.accept()
except KeyboardInterrupt:
raise
except:
traceback.print_exc()
continue
try:
print(" :",clientsock.getpeername())
while 1:
data=clientsock.recv(4096).decode()
if not len(data):
break
print(clientsock.getpeername()[0]+':'+str(data))
clientsock.sendall(data.encode())
clientsock.sendall(("
I get it!
").encode())
t=input('input the word:')
clientsock.sendall(t.encode())
except (KeyboardInterrupt,SystemExit):
raise
except:
traceback.print_exc()
try:
clientsock.close()
except KeyboardInterrupt:
raise
except:
traceback.print_exc()
클라이언트:
import socket,sys
port=12345
host=input(' ip:')
data=input(' :')
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((host,port))
except:
print(' !')
s.send(data.encode())
s.shutdown(1)
print(' 。')
while 1:
buf=s.recv(4096).decode()
if not len(buf):
break
sys.stdout.write(buf)
이제 몇 가지 사소한 문제에 대해 이야기해 봅시다.
1. 다른 컴파일 환경과 마찬가지로 서버와 클라이언트를 각각 실행하는 두 개의 프로세스가 필요합니다. 즉, 두 개의 셸 스크립트를 열 수 있습니다.
2. 인코딩 방식의 문제.Socket은 모두byte 인코딩 방식을 사용하고 Python3은 유니코드 인코딩 방식을 사용하기 때문에 decode와 encode 함수 변환을 사용해야 합니다
3. 이 예는 함수 작용을 소개하는 기초적인 예일 뿐이므로 실제로 사용할 때 반드시 기능 확장을 하고 대상을 향한 부분을 추가해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.