소켓 프로그래밍(Socket Program) TCP 간단한 채팅 프로그램(Python 코드 첨부)
11851 단어 작은 항목
설명
이번 실천은 다중 임무와 관련이 없고 단지 단일 라인에서 완성했기 때문에 클라이언트와 서버는 한 사람이 한마디 하는 상태에 속한다.클라이언트가 연결을 시작하고 성공한 후에 먼저 메시지를 보내고 클라이언트가 수신한 다음에 클라이언트가 다시 메시지를 보냅니다.즉 "한 사람이 한 번 말한다"는 상태에 속한다.후속 계약 도입 후에는 제한이 없으며, 이번에는 가장 간단한 TCP 통신 과정을 체험할 뿐이다.
통신 예
첫 번째 그룹(현재 연결을 닫은 후 서버가 계속 연결을 기다립니다)
클라이언트
- 연결 성공 - 본기 발송: Hi i'm client.Hi let's have a talk를 보냈습니다.이 컴퓨터 발송: Ok, what's your name?I'm the Server가 전송되었습니다.기본 발송:bye 발송됨
- 클라이언트가 닫힙니다.
서버
접속 대기--('192.168.43.65', 52934): Hi i'm client.서버 발송: Hi let's have a talk.발송됨 ('192.168.43.65', 52934): Ok, what's your name?서버 전송: I'm the Server.발송됨 ('192.168.43.65', 52934):bye----연결 종료--접속 대기--
두 번째 그룹(클라이언트 서버 닫기)
클라이언트
--연결 성공 --본기 발송:shut down 발송
- 클라이언트가 닫힙니다.
서버
접속 대기--('192.168.43.65', 52949):shutdown--서비스 종료
코드
주의하다
클라이언트와 서버 코드는 두 개의 서로 다른 IP 세그먼트에서 실행되어야 한다. 예를 들어 하나는 본 컴퓨터에서 실행되고, 둘은 가상 컴퓨터에서 실행되며, 클라이언트는 서버의 IP와 감청하는 포트를 설정해야 한다.
서버
수신
"bye"
시 현재 접속이 종료되고 수령 "shut down"
시 서버가 종료됩니다.from socket import *
# TCP
tcpSocket = socket(AF_INET, SOCK_STREAM)
#
localAddress = ('', 9000)
#
tcpSocket.bind(localAddress)
#
tcpSocket.listen(1)
#
on = 1
#
while True:
try:
print("—— ——")
connect, clientAddress = tcpSocket.accept()
while True:
try:
#
data = connect.recv(1024).decode()
if (not data) or (data == "bye"): # "bye"
connect.close()
print("{} : {} ———— ".format(clientAddress, data))
break
elif data == "shut down": # "shut down"
tcpSocket.close()
on = 0
print("{} : {} ———— ".format(clientAddress, data))
break
else:
print("{} : {}".format(clientAddress, data))
#
data = input(" : ")
connect.send(data.encode())
print(" ")
except:
connect.close()
if on == 0:
break
except:
tcpSocket.close()
break
클라이언트
8
줄은 서버의 관련 주소와 연결된 감청 포트로 설정됩니다.from socket import *
#
tcpSocket = socket(AF_INET, SOCK_STREAM)
#
aimAddress = ('192.168.43.175', 9000)
#
tcpSocket.connect(aimAddress)
print("—— ——")
while True:
try:
#
data = input(" : ")
#
tcpSocket.send(data.encode())
print(" ")
#
data = tcpSocket.recv(1024).decode()
print(data)
if not data:
tcpSocket.close()
print("—— ——")
break
elif data == "bye":
tcpSocket.close()
print("—— ——")
except:
tcpSocket.close()
print("—— ——")
break
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클릭하여 바로 그리기python pyheatmap 패키지로 열도 그리기 마우스 위치 가져오기 마우스 클릭 위치 읽기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.