수색…


비고

(아주) 기본적인 파이썬 클라이언트 소켓 예제

가장 간단한 파이썬 소켓 클라이언트 - 서버 예제

서버 측:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print(buf)
    break

고객 입장에서:

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')

먼저 SocketServer.py를 실행하고 서버가 sth를 수신 / 수신 할 준비가되었는지 확인한 다음 클라이언트가 정보를 서버로 보냅니다. 서버는 sth를 수신 한 후 종료합니다.

간단한 HTTP 서버 만들기

로컬 네트워크에서 파일을 공유하거나 간단한 웹 사이트 (http 및 javascript)를 호스팅하려면 Python의 기본 제공 SimpleHTTPServer 모듈을 사용할 수 있습니다. 파이썬은 Path 변수에 있어야합니다. 파일이있는 폴더로 이동하여 다음을 입력하십시오.

python 2 :

$ python -m SimpleHTTPServer <portnumber>

python 3 :

$ python3 -m http.server <portnumber>

포트 번호가 주어지지 않으면 8000 이 기본 포트입니다. 출력은 다음과 같습니다.

0.0.0.0 포트 8000에서 HTTP 검색 중 ...

http://hostipaddress:8000/ 을 입력하여 로컬 네트워크에 연결된 모든 장치를 통해 파일에 액세스 할 수 있습니다.

hostipaddress192.168.xx 시작하는 로컬 IP 주소입니다.

모듈을 완성하려면 ctrl+c. 를 누르십시오 ctrl+c.

TCP 서버 만들기

socketserver 라이브러리를 사용하여 TCP 서버를 작성할 수 있습니다. 다음은 간단한 에코 서버입니다.

서버 측

from sockerserver import BaseRequestHandler, TCPServer

class EchoHandler(BaseRequestHandler):
    def handle(self):
        print('connection from:', self.client_address)
        while True:
            msg = self.request.recv(8192)
            if not msg:
                break
            self.request.send(msg)

if __name__ == '__main__':
    server = TCPServer(('', 5000), EchoHandler)
    server.serve_forever()

고객 입장에서

from socket import socket, AF_INET, SOCK_STREAM
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(('localhost', 5000))
sock.send(b'Monty Python')
sock.recv(8192)  # returns b'Monty Python'

socketserver 는 간단한 TCP 서버를 만드는 것이 상대적으로 쉽습니다. 그러나 기본적으로 서버는 단일 스레드이며 한 번에 하나의 클라이언트 만 제공 할 수 있습니다. 여러 클라이언트를 처리하려는 경우 대신 ThreadingTCPServer 를 인스턴스화하십시오.

from socketserver import ThreadingTCPServer
...
if __name__ == '__main__':
    server = ThreadingTCPServer(('', 5000), EchoHandler)
    server.serve_forever()

UDP 서버 만들기

UDP 서버는 socketserver 라이브러리를 사용하여 쉽게 생성됩니다.

간단한 시간 서버 :

import time
from socketserver import BaseRequestHandler, UDPServer

class CtimeHandler(BaseRequestHandler):
    def handle(self):
    print('connection from: ', self.client_address)
    # Get message and client socket
    msg, sock = self.request
    resp = time.ctime()
    sock.sendto(resp.encode('ascii'), self.client_address)

if __name__ == '__main__':
    server = UDPServer(('', 5000), CtimeHandler)
    server.serve_forever()

테스트 :

>>> from socket import socket, AF_INET, SOCK_DGRAM
>>> sock = socket(AF_INET, SOCK_DGRAM)
>>> sick.sendto(b'', ('localhost', 5000))
0
>>> sock.recvfrom(8192)
(b'Wed Aug 15 20:35:08 2012', ('127.0.0.1', 5000))

스레드에서 Simple HttpServer를 시작하고 브라우저를 엽니 다.

프로그램이 웹 페이지를 출력 할 때 유용합니다.

from http.server import HTTPServer, CGIHTTPRequestHandler
import webbrowser
import threading

def start_server(path, port=8000):
    '''Start a simple webserver serving path on port'''
    os.chdir(path)
    httpd = HTTPServer(('', port), CGIHTTPRequestHandler)
    httpd.serve_forever()

# Start the server in a new thread
port = 8000
daemon = threading.Thread(name='daemon_server',
                          target=start_server,
                          args=('.', port)
daemon.setDaemon(True) # Set as a daemon so it will be killed once the main thread is dead.
daemon.start()

# Open the web browser 
webbrowser.open('http://localhost:{}'.format(port))


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow