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 | 호스트 이름 네트워크 인터페이스의 식별자 -
|
5 | 포트 각 서버는 하나 이상의 포트에서 호출하는 클라이언트를 수신합니다. 포트는 Fixnum 포트 번호, 포트 번호가 포함된 문자열 또는 서비스 이름일 수 있습니다. |
소켓을 생성하려면 socket.socket()을 사용해야 합니다. 소켓에서 사용 가능한 기능 일반 구문이 있는 모듈 -
s = socket.socket (socket_family, socket_type, protocol=0)
다음은 매개변수에 대한 설명입니다. -
소켓_패밀리 − 앞서 설명한 대로 AF_UNIX 또는 AF_INET입니다.
소켓 유형 − SOCK_STREAM 또는 SOCK_DGRAM입니다.
프로토콜 − 일반적으로 생략되며 기본값은 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 네트워크/인터넷 프로그래밍의 몇 가지 중요한 모듈 목록입니다.
프로토콜 | 공통 기능 | 포트 번호 | 파이썬 모듈 |
---|---|---|---|
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 소켓 라이브러리 및 모듈.
python
놓치신 경우:Python 2는 2020년 1월 1일부로 공식적으로 지원되지 않음 . 아직 Python 2.7을 사용 중이라면 지금 업그레이드하세요. . 실행 중인 버전이 확실하지 않은 경우 Python 버전을 확인하세요. 많은 패키지 유지 관리자가 Python 3으로 마이그레이션했습니다. 일부는 여전히 Python 2를 지원하고 다른 일부는 이미 Python 2 지원을 중단했습니다. Python 2 코드 기반에서 마이그레이션해야 하는 경우 Python 코드를 Python 3으로 마이그레이션하는 방법에 대한 가이드를 읽어보세요.
이전 페이지다음 페이지 Python은 그래픽 사용자 인터페이스(GUI) 개발을 위한 다양한 옵션을 제공합니다. 가장 중요한 것은 아래에 나열되어 있습니다. 트킨터 − Tkinter는 Python과 함께 제공되는 Tk GUI 툴킷에 대한 Python 인터페이스입니다. 이 장에서 이 옵션을 살펴보겠습니다. wx파이썬 − wxWindows용 오픈 소스 Python 인터페이스 http://wxpython.org J파이썬 − JPython은 Python 스크립트가 로컬 시스템 http://www.jython.org의 Ja