页面装载中...

Python 笔记:实现 UDP 服务器/客户端

今后可能会写几篇这样的 Python 初学者笔记,但是从我的出发点看来,并没有打算、也没有能力写成类似教程的文章,而仅仅是将自己学习到的东西整理、记录一下。

下面的代码实现一对 UDP 服务器/客户端。服务器:接收发送自客户端的包再返回给客户端;客户端:向服务器发送包并打印服务器的响应。

服务器:

#!/usr/bin/env python
# UDP Echo Server -  udpechoserver.py
import socket, traceback

host = ''
port = 54321

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))

while 1:
    try:
        message, address = s.recvfrom(8192)
        print "Got data from", address
        s.sendto(message, address)
    except (KeyboardInterrupt, SystemExit):
        raise
    except:
        traceback.print_exc()

客户端:

#!/usr/bin/env python
# UDP Client - udpclient.py
import socket, sys

host = sys.argv[1]
textport = sys.argv[2]

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
    port = int(textport)
except ValueError:
    port = socket.getservbyname(textport, 'udp')
s.connect((host, port))
while 1:
    print "Enter data to transmit:"
    data = sys.stdin.readline().strip()
    s.sendall(data)
    print "Looking for replies; press Ctrl-C or Ctrl-Break to stop."
    buf = s.recv(2048)
    if not len(buf):
        break
    print "Server replies: ",
    sys.stdout.write(buf)
    print "\n"

4Comment(s). Blabla or Trackback

  • 漫步 at 09:34 Jan 17, 2008 

    python 好玩吗? 有时间我也学一学?

    对了, sun 收购 Mysql了 , oracle 收购 bea 了, 哇哈.

    漫步’s last blog post..Simple Tags 1.3

  • 北极冰仔 at 09:45 Jan 17, 2008 

    太猛了。

  • mynameiszhang at 20:20 Jan 26, 2008 

    我也想学一下python ,想问问你如何学习,咱们邮件交流行吗?

  • 北极冰仔 at 20:29 Jan 26, 2008 

    zhang » 我也只是初学,懂得非常浅,欢迎交流。^^

Blabla ↓

Connecting to server...