Python 소켓을 사용하여 문자열 보내기

Zeeshan Afridi 2023년1월30일
  1. 파이썬의 소켓
  2. Python에서 소켓을 구현하는 내장 메서드
  3. 소켓 프로그래밍의 클라이언트와 서버
  4. Python 소켓에서 클라이언트-서버 통신을 사용하여 문자열 보내기
Python 소켓을 사용하여 문자열 보내기

이 기사에서는 소켓, 소켓의 내장 메소드, 서버 및 클라이언트, Python에서 소켓과 성공적인 통신을 달성하는 방법을 다룰 것입니다. 소켓은 데이터 수신 및 전송을 위해 서버와 클라이언트 측 사이의 브리지 역할을 합니다.

Python 코드에서 소켓을 만들고 소켓의 도움으로 문자열을 전달하고 클라이언트와 서버를 연결합니다.

파이썬의 소켓

소켓은 데이터 수신 및 전송을 위해 구축된 엔드포인트로 정의됩니다. 단일 네트워크에는 두 개의 소켓이 있습니다. IP 주소와 포트의 조합이 소켓에 있습니다.

단일 장치에는 포트 번호에 따라 n개의 소켓이 있습니다. 서로 다른 프로토콜에 대해 서로 다른 유형의 포트를 사용할 수 있습니다.

다음과 같은 몇 가지 표준 포트 번호와 프로토콜이 있습니다.

규약 설명
HTTP 포트 번호는 80이고 Python 라이브러리는 httplib, urllibxmlrpclib입니다. HTTP 포트는 웹 페이지에 사용됩니다.
FTP 포트 번호는 20이고 Python 라이브러리는 ftpliburllib입니다. 이 포트는 파일 전송에 사용됩니다.
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 Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Python Socket