zoukankan      html  css  js  c++  java
  • Python学习笔记(二)网络编程的简单示例

    Python中的网络编程比C语言中要简洁很多,毕竟封装了大量的细节。

    所以这里不再介绍网络编程的基本知识。而且我认为,从Python学习网络编程不是一个明智的选择。

    简单的TCP连接

    服务器代码如下:

    import socket
    from time import ctime
    
    sock = socket.socket()
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('localhost', 9981))
    sock.listen(5)
    
    while True:
        print 'waiting for connection ...'
        peersock, peeraddr = sock.accept()
        print '....connected from:', peeraddr
    
        while True:
            data = peersock.recv(1024)
            if not data:
                break
            peersock.send('[%s] %s' % (ctime(), data))
    
        peersock.close()
    sock.close()

    注意这里设置了地址复用。

    这是一个时间戳服务器,同时server还将用户的输入直接回显过去。

    客户端的代码如下:

    import socket
    
    sock = socket.socket()
    sock.connect(('localhost', 9981))
    
    while True:
        data = raw_input('> ')
        if not data:
            break;
        sock.send(data)
        data = sock.recv(1024)
        if not data:
            break
        print data
    
    sock.close()

    运行两边的代码,这里贴出客户端的运行结果:

    22:56:08 wing@ubuntu python python 2.py                                                1> foo
    [Tue Nov 11 22:56:10 2014] foo
    > bar
    [Tue Nov 11 22:56:12 2014] bar
    >

    简单的UDP连接

    服务器代码如下:

    from socket import *
    from time import ctime
    
    sock = socket(AF_INET, SOCK_DGRAM)
    sock.bind(('localhost', 9981))
    
    while True:
        print 'waiting for message ...'
        data, addr = sock.recvfrom(1024)
        sock.sendto('[%s] %s' % (ctime(), data), addr)
        print '...received from and returned to:', addr
    
    sock.close()

    客户端代码如下:

    from socket import *
    
    addr = ('localhost', 9981)
    sock = socket(AF_INET, SOCK_DGRAM)
    
    while True:
        data = raw_input('> ')
        if not data:
            break;
        sock.sendto(data, addr)
        data, addr = sock.recvfrom(1024)
        if not data:
            break
        print data
    
    sock.close()

    Python中还提供了其他一系列的高级组件,例如TcpServer、ForkingTcpServer和ThreadingTCPServer等,后面会写一篇文章,总结各种网络编程的模型,到时候再去介绍。

  • 相关阅读:
    ArtTmeplate模板+取结接口
    取接口
    ionic 基本布局
    angular通过路由实现跳转 resource加载数据
    总结
    JSON和JSONP
    js中sort()方法的用法,参数以及排序原理
    计算机语言的发展史
    Jquery+PHP实现简单的前后台数据交互实现注册登录,添加留言功能
    Jquery回调函数应用实例解析
  • 原文地址:https://www.cnblogs.com/inevermore/p/4092341.html
Copyright © 2011-2022 走看看