Python 소켓을 사용하여 문자열 보내기
이 기사에서는 소켓, 소켓의 내장 메소드, 서버 및 클라이언트, Python에서 소켓과 성공적인 통신을 달성하는 방법을 다룰 것입니다. 소켓은 데이터 수신 및 전송을 위해 서버와 클라이언트 측 사이의 브리지 역할을 합니다.
Python 코드에서 소켓을 만들고 소켓의 도움으로 문자열을 전달하고 클라이언트와 서버를 연결합니다.
파이썬의 소켓
소켓은 데이터 수신 및 전송을 위해 구축된 엔드포인트로 정의됩니다. 단일 네트워크에는 두 개의 소켓이 있습니다. IP 주소와 포트의 조합이 소켓에 있습니다.
단일 장치에는 포트 번호에 따라 n개의 소켓이 있습니다. 서로 다른 프로토콜에 대해 서로 다른 유형의 포트를 사용할 수 있습니다.
다음과 같은 몇 가지 표준 포트 번호와 프로토콜이 있습니다.
규약 | 설명 |
---|---|
HTTP |
포트 번호는 80이고 Python 라이브러리는 httplib , urllib 및 xmlrpclib 입니다. HTTP 포트는 웹 페이지에 사용됩니다. |
FTP |
포트 번호는 20이고 Python 라이브러리는 ftplib 및 urllib 입니다. 이 포트는 파일 전송에 사용됩니다. |
NNTP |
포트 번호는 119이고 Python 라이브러리는 nntplib 입니다. 이 포트는 전송되지 않은 뉴스에 사용됩니다. |
SMTP |
포트 번호는 25이고 Python 라이브러리는 smtplib 입니다. 이 포트는 이메일을 보내는 데 사용됩니다. |
TELNET |
포트 번호는 23이고 Python 라이브러리는 telnetlib 입니다. 이 포트는 명령줄에 사용됩니다. |
Pop3 |
포트 번호는 110이고 Python 라이브러리는 poplib 입니다. 이 포트는 이메일을 가져오는 데 사용됩니다. |
Gopher |
포트 번호는 70이고 Python 라이브러리는 gopherlib 입니다. 이 포트는 문서 전송에 사용됩니다. |
Python에서 소켓을 구현하는 내장 메서드
Python에서 소켓을 구현하려면 Socket
모듈 또는 프레임워크를 가져와야 합니다. 이 모든 모듈은 소켓 생성을 돕고 서로 연결하는 데 도움이 되는 내장 메서드로 구성됩니다.
다음은 소켓에 대한 몇 가지 강력한 내장 메서드입니다.
Socket.socket()
메소드는 소켓을 생성합니다. 클라이언트 측과 서버 측과 같이 양쪽 모두에 필요합니다.Socket.accept()
는 연결을 수락하는 데 사용됩니다.Socket.accept()
메서드는 (conn, address)와 같은 값 쌍을 반환합니다.Socket.bind()
는 매개변수로 지정된 주소를 바인딩하는 데 사용됩니다.Socket.close()
는 소켓이 닫혀 있음을 나타냅니다.Socket.connect()
는 매개변수로 지정된 주소를 연결하는 데 사용됩니다.Socket.listen()
은 서버 또는 클라이언트에서 명령을 수신하는 데 사용됩니다.
소켓 프로그래밍의 클라이언트와 서버
아래에서 소켓 프로그래밍에서 클라이언트와 서버가 의미하는 바를 배우게 됩니다.
고객
서버로부터 정보나 데이터를 받는 컴퓨터나 소프트웨어를 클라이언트라고 합니다. 클라이언트는 서버에서 서비스를 요청합니다. 웹 브라우저는 클라이언트의 가장 좋은 예입니다.
섬기는 사람
서버는 네트워크 리소스를 관리하는 데 사용되는 프로그램, 컴퓨터 또는 장치입니다. 서버는 동일한 장치, 로컬 컴퓨터 또는 원격일 수 있습니다.
Python 소켓에서 클라이언트-서버 통신을 사용하여 문자열 보내기
우리는 Python 파일의 소켓에서 통신을 위한 두 개의 파일을 만들 것입니다. 하나는 서버 측용이고 다른 하나는 클라이언트 측용입니다. 그리고 연결 구축을 위한 두 가지 프로그램이 있습니다.
Python 소켓의 서버 측
먼저 서버 측 코드를 생성합니다. 내장 메서드를 사용하여 서버 측 코드를 생성합니다.
서버 측 코드는 다음과 같습니다.
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and IP protocols
# This method will bind the sockets with server and port no
s.bind(("localhost", 9999))
s.listen(1) # Will allow a maximum of one connection to the socket
c, addr = s.accept() # will wait for the client to accept the connection
print("CONNECTION FROM:", str(addr)) # Will display the address of the client
c.send(
b"HELLO, Are you enjoying programming?/Great! Keep going"
) # Will send message to the client after encoding
msg = "Take Care.............."
c.send(msg.encode())
c.close() # Will disconnect from the server
출력:
This connection is from: ('127.0.0.1', 50802)
Python 소켓의 클라이언트 측
클라이언트는 서버에 메시지를 보내고 서버는 해당 메시지에 응답합니다. 클라이언트 측에서도 코드에 내장된 메서드를 사용합니다.
클라이언트 측에서는 먼저 소켓을 생성합니다. 그런 다음 호스트의 IP 주소와 포트 번호를 연결합니다.
암호:
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and, IP protocols
s.connect(("localhost", 9999)) # Will connect with the server
# Will receive the reply message string from the server at 1024 B
msg = s.recv(1024)
while msg:
print("Received:" + msg.decode())
msg = s.recv(1024) # Will run as long as the message string is empty
s.close() # Will disconnect the client
출력:
The message is Revived: HELLO, Are you enjoying programming? Great! Keep going
The message is Revived: Take Care..............
주어진 코드가 실행되면 서버와 클라이언트 사이에 연결이 구축됩니다. 그리고 연결 후 클라이언트 화면에 메시지가 표시됩니다.
메시지는 다음과 같습니다.
HELLO, Are you enjoying programming? Great! Keep going
그리고 다른 메시지는 다음과 같습니다.
Take Care..............
이 메시지는 서버 측에서 보냈기 때문에 클라이언트 측에서 표시됩니다. 이렇게 하면 코드가 실행되고 Python의 소켓을 통해 문자열을 보내는 출력을 제공합니다.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn