Python 소켓 네트워크 프로그래밍 TCP/IP 서버 및 클라이언트 통신
Python 소켓 네트워크 프로그래밍
저는 Python을 처음 접했습니다. 얼마 전에 "Python 프로그래밍 입문에서 실습"과 "Python Core 프로그래밍 제3권"이라는 책을 두 권 구입했습니다. Edition", Vol. 한 권은 주로 몇 가지 기본 구문과 몇 가지 기본적인 사용 방법에 대해 설명하고 있는 반면, 두 번째 책은 훨씬 더 심층적입니다. 제가 이해한 바는 거의 없는 것 같습니다. 우연히 네트워크 프로그래밍에서 이 부분을 보게 되었습니다. , 그리고 아직도 이해가 안되는 부분이 많습니다. 하지만 생각해보면 자신만의 끊임없는 탐색과 정보와 배움에 대한 끊임없는 탐구를 통해 조만간 더욱 투명해져야 할 것입니다...
메인 모듈 이 부분에서 사용되는 것은 소켓 모듈이며, 소켓 개체를 생성하는 데 사용되는 이 모듈() 함수에서 소켓을 찾을 수 있습니다. 소켓에도 소켓 기반 네트워크 통신을 구현할 수 있는 자체 메소드 세트가 있습니다.
socket() 모듈 함수
소켓을 생성하려면 소켓.socket() 함수를 사용해야 합니다.
socket(socket_family, socket_type, protocol=0)
여기서 소켓_패밀리는 AF_UNIX 또는 AF_INET이고, 소켓 유형은 SOCK_STREAM 또는 SOCK_DGRAM이며, 프로토콜은 일반적으로 생략되며 기본값은 0입니다.
그래서 TCP/를 생성합니다. IP 소켓의 경우 다음 방법을 사용하여 소켓.socket()을 호출할 수 있습니다.
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
마찬가지로 UDP/IP 소켓을 생성하고 다음 방법을 사용하여 호출합니다.
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
TCP 서버 생성
TCP 서버를 생성하는 과정은 기본적으로 다음과 같습니다. 실제 코드가 아님
ss = socket() #创建服务器套接字 ss.bind() #套接字与地址绑定 ss.listen() #监听连接 inf_loop: #服务器无限循环 cs = ss.accepr() #接受客户端连接 comm_loop: #通信循环 cs.recv()/cs.send() #对话(接收/发送) cs.close() #关闭客户端套接字 ss.close() #关闭服务器套接字(可选)
실제로 TCP 서버를 만드는 기본 과정은 위에서 언급한 것과 약간 다를 수 있지만 기본 아이디어는 다음과 같습니다. 다음은 실제 서버의 코드입니다:
#!/usr/bin/env python # -*- coding: utf-8 -*- from socket import * #将 socket 属性引入到命名空间 HOST = '' #这是对 bind()方法的标识表示可以使用任何可用的地址 PORT = 21571 #端口号 BUFSIZ = 1024 #缓冲区大小,1kb ADDR = (HOST,PORT) #地址???? tcpSerSocket = socket(AF_INET,SOCK_STREAM) #创建 tcp 套接字 tcpSerSocket.bind(ADDR) #将地址绑定到套接字上 tcpSerSocket.listen(5) #设置并启动套接字监听 while True: #无限循环,等待客户端连接 print('waiting for connection...') tcpCliSocket,addr = tcpSerSocket.accept() #被动接受客户端连接 print('...connected from:',addr) while True: #对话循环,等待客户端发送消息 data = tcpCliSocket.recv(BUFSIZ) #接收客户端消息 if not data: #如果消息是空白,跳出对话循环,关闭当前连接 break tcpCliSocket.send(data) #如果收到消息,将消息原封不动返回客户端 tcpCliSocket.close() tcpSerSocket.close()
TCP 클라이언트 생성
동일 위와 같이 간단한 비코드 프로세스
cs = socket() #创建客户端套接字 cs.connect() #尝试连接服务器 comm_loop: #通信循环 cs.send()/cs.recv() #对话(发送/接收) cs.close() #关闭客户端套接字
사실 클라이언트를 생성하는 것도 위 단계를 번역한 것입니다
#!/usr/bin/env python # -*- coding: utf-8 -*- from socket import * HOST = 'localhost' #服务器的主机名 PORT = 21571 #端口号 BUFSIZ = 1024 #缓冲区 ADDR = (HOST,PORT) #地址 tcpCliSocket = socket(AF_INET,SOCK_STREAM) #创建客户端套接字 tcpCliSocket.connect(ADDR) #连接服务器 while True: #通信循环 data = input('> ') #客户端输入信息 if not data: #如果输入信息为空,则跳出循环,关闭通信 break data = str.encode(data) tcpCliSocket.send(data) #发送客户端信息 data = tcpCliSocket.recv(BUFSIZ) #接受服务器返回信息 if not data: #如果服务器未返回信息,关闭通信循环 break print('get:',data.decode('utf-8')) tcpCliSocket.close()
물론 이것은 가장 기본적인 통신일 뿐이고 호스트명, 포트번호 등은 아직 잘 모르겠습니다. 현재 제가 하고 있는 일은 같은 컴퓨터, 포트 번호도 동일해야 합니다. 서로 다른 컴퓨터가 통신하는 경우 어떻게 해야 합니까? 저는 초보자일 뿐입니다...
읽어주셔서 감사합니다. 도움이 되었으면 좋겠습니다. 이 사이트를 지원해 주셔서 감사합니다!
Python 소켓 네트워크 프로그래밍 TCP/IP 서버 및 클라이언트 통신과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.
