산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 - 네트워크 프로그래밍

이전 페이지다음 페이지

Python은 네트워크 서비스에 대한 두 가지 수준의 액세스를 제공합니다. 낮은 수준에서 기본 운영 체제의 기본 소켓 지원에 액세스할 수 있으므로 연결 지향 및 비연결 프로토콜 모두에 대해 클라이언트와 서버를 구현할 수 있습니다.

Python에는 FTP, HTTP 등과 같은 특정 응용 프로그램 수준 네트워크 프로토콜에 대한 높은 수준의 액세스를 제공하는 라이브러리도 있습니다.

이 장에서는 네트워킹 - 소켓 프로그래밍에서 가장 유명한 개념에 대한 이해를 제공합니다.

소켓이란 무엇입니까?

소켓은 양방향 통신 채널의 끝점입니다. 소켓은 프로세스 내, 동일한 시스템의 프로세스 간 또는 다른 대륙의 프로세스 간에 통신할 수 있습니다.

소켓은 Unix 도메인 소켓, TCP, UDP 등 다양한 채널 유형을 통해 구현될 수 있습니다. 소켓 라이브러리는 공통 전송을 처리하기 위한 특정 클래스와 나머지를 처리하기 위한 일반 인터페이스를 제공합니다.

소켓에는 고유한 어휘가 있습니다 −

시니어 번호 용어 및 설명
1

도메인

전송 메커니즘으로 사용되는 프로토콜 제품군입니다. 이러한 값은 AF_INET, PF_INET, PF_UNIX, PF_X25 등과 같은 상수입니다.

2

유형

두 끝점 간의 통신 유형입니다. 일반적으로 연결 지향 프로토콜의 경우 SOCK_STREAM이고 연결 없는 프로토콜의 경우 SOCK_DGRAM입니다.

3

프로토콜

일반적으로 0이며 도메인 및 유형 내에서 프로토콜의 변형을 식별하는 데 사용할 수 있습니다.

4

호스트 이름

네트워크 인터페이스의 식별자 -

  • 호스트 이름, 점으로 구분된 쿼드 주소 또는 콜론(점 가능) 표기법의 IPV6 주소일 수 있는 문자열

  • INADDR_BROADCAST 주소를 지정하는 문자열 "".

  • INADDR_ANY 또는

    를 지정하는 길이가 0인 문자열
  • 호스트 바이트 순서의 이진 주소로 해석되는 정수입니다.

5

포트

각 서버는 하나 이상의 포트에서 호출하는 클라이언트를 수신합니다. 포트는 Fixnum 포트 번호, 포트 번호가 포함된 문자열 또는 서비스 이름일 수 있습니다.

소켓 모듈

소켓을 생성하려면 socket.socket()을 사용해야 합니다. 소켓에서 사용 가능한 기능 일반 구문이 있는 모듈 -

s = socket.socket (socket_family, socket_type, protocol=0)

다음은 매개변수에 대한 설명입니다. -

소켓이 있으면 객체를 생성한 다음 필요한 기능을 사용하여 클라이언트 또는 서버 프로그램을 생성할 수 있습니다. 다음은 필요한 기능 목록입니다 -

서버 소켓 방법

시니어 번호 방법 및 설명
1

s.bind()

이 메서드는 주소(호스트 이름, 포트 번호 쌍)를 소켓에 바인딩합니다.

2

.listen()

이 메소드는 TCP 리스너를 설정하고 시작합니다.

3

.accept()

이것은 TCP 클라이언트 연결을 수동적으로 수락하고 연결이 도착할 때까지 기다립니다(차단).

클라이언트 소켓 방법

시니어 번호 방법 및 설명
1

.connect()

이 방법은 TCP 서버 연결을 능동적으로 시작합니다.

일반 소켓 방법

시니어 번호 방법 및 설명
1

s.recv()

이 메소드는 TCP 메시지를 수신합니다.

2

s.send()

이 메소드는 TCP 메시지를 전송합니다.

3

s.recvfrom()

이 메소드는 UDP 메시지를 수신합니다.

4

s.sendto()

이 방법은 UDP 메시지를 전송합니다.

5

.close()

이 메서드는 소켓을 닫습니다.

6

소켓.gethostname()

호스트 이름을 반환합니다.

간단한 서버

인터넷 서버를 작성하기 위해 소켓을 사용합니다. 소켓 객체를 생성하기 위해 소켓 모듈에서 사용할 수 있는 함수. 그런 다음 소켓 개체는 소켓 서버를 설정하기 위해 다른 기능을 호출하는 데 사용됩니다.

이제 bind(호스트 이름, 포트)를 호출하십시오. 포트를 지정하는 기능 주어진 호스트에서 서비스를 제공합니다.

그런 다음 동의를 호출합니다. 반환된 개체의 메서드입니다. 이 메서드는 클라이언트가 지정한 포트에 연결할 때까지 기다린 다음 연결을 반환합니다. 해당 클라이언트에 대한 연결을 나타내는 개체입니다.

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

간단한 클라이언트

주어진 포트 12345와 호스트에 대한 연결을 여는 매우 간단한 클라이언트 프로그램을 작성해 보겠습니다. Python의 socket을 사용하여 소켓 클라이언트를 만드는 것은 매우 간단합니다. 모듈 기능.

socket.connect(호스이름, 포트) 호스트 이름에 대한 TCP 연결을 엽니다. 포트에서 . 소켓이 열리면 다른 IO 객체처럼 소켓에서 읽을 수 있습니다. 완료되면 파일을 닫을 때처럼 닫아야 합니다.

다음 코드는 주어진 호스트와 포트에 연결하고 소켓에서 사용 가능한 데이터를 읽은 다음 종료하는 매우 간단한 클라이언트입니다 -

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

이제 이 server.py를 백그라운드에서 실행한 다음 client.py 위에서 실행하여 결과를 확인하십시오.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

이것은 다음 결과를 생성합니다 -

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python 인터넷 모듈

Python 네트워크/인터넷 프로그래밍의 몇 가지 중요한 모듈 목록입니다.

프로토콜 공통 기능 포트 번호 파이썬 모듈
HTTP 웹 페이지 80 httplib, urllib, xmlrpclib
NNTP 유즈넷 뉴스 119 nntplib
FTP 파일 전송 20 ftplib, urllib
SMTP 이메일 보내기 25 smtplib
POP3 이메일 가져오기 110 팝립
IMAP4 이메일 가져오기 143 이맵립
텔넷 명령줄 23 텔넷립
고퍼 문서 전송 70 gopherlib, urllib

FTP, SMTP, POP 및 IMAP 프로토콜과 함께 작동하려면 위에 언급된 모든 라이브러리를 확인하십시오.

추가 자료

이것은 소켓 프로그래밍의 빠른 시작이었습니다. 그것은 방대한 주제입니다. 자세한 내용을 보려면 다음 링크를 방문하는 것이 좋습니다 -


python

  1. 파이썬 데이터 유형
  2. 파이썬 연산자
  3. 파이썬 통과 문
  4. 파이썬 함수 인수
  5. 파이썬 사전
  6. 파이썬 객체 지향 프로그래밍
  7. 파이썬 반복자
  8. 파이썬 클로저
  9. 파이썬 날짜 시간
  10. 파이썬 수면()