python 네트워크 프로 그래 밍 상세 및 간단 한 인 스 턴 스

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()
읽 어 주 셔 서 감사합니다. 여러분 을 도 울 수 있 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기