python 네트워크 프로 그래 밍 상세 및 간단 한 인 스 턴 스
5439 단어 python네트워크 프로 그래 밍
네트워크 프로 그래 밍 의 특허권 은 유 닉 스에 속 해 야 한다.각 플랫폼(예 를 들 어 windows,Linux 등),각 언어(C,C++,Python,Java 등)가 실현 하 는 자신의 특성 에 맞 는 문법 은 모두 대동소이 하 다.내 가 보기에 유 닉 스 의 socket 네트워크 프로 그래 밍 을 알 게 되 었 고 다른 형식의 네트워크 프로 그래 밍 방법 도 알 게 되 었 다.이 말 은 아직 그다지 엄밀 하지 않다.정확 한 것 은 socket 프로 그래 밍 의 원 리 를 알 게 되 었 고 인터넷 프로 그래 밍 도 알 게 되 었 습 니 다.다른 점 은 모든 플랫폼 에 있 습 니 다.모든 언어 는 자신 만 의 문법 이 있 습 니 다.우 리 는 직접 유연 하 게 사용 하면 됩 니 다.
다음은 python 으로 이 루어 진 가장 기본 적 인 네트워크 프로 그래 밍 의 예 입 니 다.즉,클 라 이언 트-서버 의 구 조 를 바탕 으로 클 라 이언 트 와 서버 간 의 단 방향'데이터 유통'을 실현 합 니 다.우 리 는 각각 두 가지 방법 으로 실현 한다.하 나 는 가장 원시 적 인 socket 프로 그래 밍 이다.다른 하 나 는 python 의 대상 을 대상 으로 첫 번 째 방법 을 포장 하여 실현 하 는 것 이다.목적 은 투명 성 을 감소 하고 빠 른 개발 에 편리 하도록 하 는 것 이다.
요구:클 라 이언 트 가 데 이 터 를 입력 하여 서버 에 보 내 고 서버 에서(시간 스탬프+데이터)의 패 키 징 데이터 응답 클 라 이언 트 를 생 성 합 니 다.socket 프로 그래 밍 은 연결 을 위 한 것 과 연결 되 지 않 은 것 두 가 지 를 포함 하기 때문에 이 두 가 지 는 각각 TCP 데이터 흐름 과 UDP 데이터 메시지 에 대응 합 니 다.그래서 우 리 는 두 가지 방법 을 모두 실현 한다.
1.Python socket 프로 그래 밍
연결 을 위 한 TCP socket 프로 그래 밍:
# -*- coding: utf-8 -*-
3 from socket import *
from time import ctime
# Address and Port
HOST = ''
PORT = 21567
ADDR = (HOST, PORT)
# BuffSize
BUFSIZ = 1024
# build socket
tcpSerSock = socket(AF_INET, SOCK_STREAM)
# bind socket
tcpSerSock.bind(ADDR)
# listen 5 client
tcpSerSock.listen(5)
try:
while True:
print 'waiting for connection...'
# build client socket
tcpCliSock, addr = tcpSerSock.accept()
print '...connect from:', addr
# accept data and process
while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send('[%s] %s' % (ctime(), data))
# close client socket
tcpCliSock.close()
except EOFError, KeyboardInterrupt:
tcpSerSock.close()
# -*- coding:utf-8 -*-
from socket import *
# Address and Port
HOST = '127.0.0.1'
PORT = 21567
ADDR = (HOST, PORT)
# BufferSize
BUFSIZ = 1024
#build socket
tcpCliSocket = socket(AF_INET, SOCK_STREAM)
tcpCliSocket.connect(ADDR)
while True:
data = raw_input('> ')
if not data:
break
# send data
tcpCliSocket.send(data)
# recv data
data = tcpCliSocket.recv(BUFSIZ)
if not data:
break
# show data
print data
tcpCliSocket.close()
연결 되 지 않 은 UDP socket 프로 그래 밍
# -*- coding: utf-8 -*-
from socket import *
from time import ctime
# Address and Port
HOST = ''
PORT = 8000
ADDR = (HOST, PORT)
# BufferSize
BUFFSIZE = 1024
# build socket
udpSerSock = socket(AF_INET, SOCK_DGRAM)
# bind socket
udpSerSock.bind(ADDR)
try:
while True:
print 'waiting the message...'
data, addr = udpSerSock.recvfrom(BUFFSIZE)
print 'received the message: '+data+' from: ', addr
udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)
except EOFError, KeyboardInterrupt:
udpSerSock.close()
# -*- coding: utf-8 -*-
from socket import *
# Address and Port
HOST = 'localhost'
PORT = 8000
ADDR = (HOST, PORT)
# BufferSize
BUFSIZ = 1024
# build socket
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = raw_input('> ')
udpCliSock.sendto(data, ADDR)
data = udpCliSock.recvfrom(BUFSIZ)
if not data:
break
print data
udpCliSock.close()
2.패 키 징 클래스 SocketServer 기반 네트워크 프로 그래 밍
# -*- coding: utf-8 -*-
from SocketServer import TCPServer as TCP, StreamRequestHandler as SRH
from time import ctime
# Address and Port
HOST = ''
PORT = 21567
ADDR = (HOST, PORT)
# BuffSize
BUFSIZ = 1024
# build RequestHandler
class MyRequestHandler(SRH):
def handle(self):
print '...connected from: ', self.client_address
self.wfile.write('[%s] %s' % (ctime(), self.rfile.readline()))
# build TCPServer
TCPServ = TCP(ADDR, MyRequestHandler)
print 'waiting for connection...'
# loop to process
TCPServ.serve_forever()
# -*- coding:utf-8 -*-
from socket import *
# Address and Port
HOST = '127.0.0.1'
PORT = 21567
ADDR = (HOST, PORT)
# BufferSize
BUFSIZ = 1024
while True:
# note: SocketServer ,
# , ,
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
# process data
data = raw_input('> ')
if not data:
break
tcpCliSock.send('%s\r
' % data)
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print data.strip()
tcpCliSock.close()
읽 어 주 셔 서 감사합니다. 여러분 을 도 울 수 있 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.