• python中的TCP编程学习


    今天看了一下关于python的TCP编程。

    发现思路和其他语言(比如java)思路基本上差点儿相同。

    先看client。基本过程例如以下:

    • 第一步:创建一个socket
    • 第二步:建立连接
    • 第三步:发送数据
    • 第四步:读取从server发送过来的数据
    • 第五步:关闭连接
    • 第六步:对收到的数据进行处理

    以下为python的TCP编程的client程序的一个小样例。java中关于网络编程的博文请看这里

    #coding:utf-8
    #TCP编程的client程序
    #编写client程序与其他语言(比如java)的思路差点儿相同。例如以下
    #第一步:创建一个socket
    import socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #第二步:建立连接,參数是一个tuple,以訪问新浪为例
    s.connect(('www.sina.com.cn',80))#80port是Web服务的标准port
    #第三步:发送数据
    s.send(b'GET / HTTP/1.1
     Host:www.sina.com.cn
    Connection:close
    
    ')
    #第四步:接收数据
    buffer=[]
    while True:
        d=s.recv(1024)  #recv(max)方法。表示每次仅仅能读取max个字节
        if d:
            buffer.append(d)
        else:
            break
    date=b''.join(buffer)
    
    #第五步:关闭连接
    s.close()
    #第六步:对接收到的数据进行处理
    #因为接收到的数据包含http头和网页本身。因此将其分开
    header,html=date.split(b'
    
    ',1)
    print(header.decode('utf-8'))
    with open('sina.html','wb') as f:
        f.write(html)

    以下看server端的程序。思路例如以下

    • 第一步:创建一个socket
    • 第二步:绑定监听的地址和port,方法bind()仅仅接收一个tuple
    • 第三步:调用listen()方法開始监听port,传入的參数指定等待连接的最大数量
    • 第四步:server程序通过一个永久循环来接收来自client。accept()会等待并返回一个client的连接
    #python中的server端的程序,其用来測试的client程序为:tcpClient1.py
    #coding:utf-8
    
    import socket
    import threading
    def tcplink(sock,addr):
        print('Accept new connection from %s:%s...'%addr)
        sock.send(b'welcome')
        while True:
            date=sock.recv(1024)
            if not date or date.decode('utf-8')=='exit':
                break 
            print(date.decode('utf-8')) 
    
        sock.close()
        print('Connection from %s:%s'%addr)
    #第一步:创建一个socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #第二步:绑定监听的地址和port,方法bind()仅仅接收一个tuple
    s.bind(('127.0.0.1',9999))
    #第三步:调用listen()方法開始监听port。传入的參数指定等待连接的最大数量
    s.listen(10)
    #第四步:server程序通过一个永久循环来接收来自client,accept()会等待并返回一个client的连接
    while True:
        sock,addr=s.accept()
        #创建一个新线程来处理TCP链接
        threading.Thread(target=tcplink,args=(sock,addr)).start()

    測试上面的server端的程序。我们用一个简单的client程序来測试。例如以下

    #为tcpServerserver端写一个測试的client程序
    #coding:utf-8
    import socket
    #第一步:创建一个socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #第二步:建立连接
    s.connect(('127.0.0.1',9999))
    #第三步:发送数据
    s.send(b'hello World!')
    #第三步:接收数据
    date=s.recv(1024)
    print(date.decode('utf-8'))

    刚好前几天系统的学习了一下git版本号控制这个工具。于是,也就開始经营我的Github了,上面的代码可在我的Github中下载,点击这里就可以

    參考地址例如以下:关于TCP编程的具体介绍http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432004374523e495f640612f4b08975398796939ec3c000

  • 相关阅读:
    Windows Phone 8 Wallet 手机钱包 / 电子钱包
    Windows Phone 8 In app purchase 应用内购买 / 应用内支付
    Windows Phone 8 适应多屏分辨率
    Windows phone 8 基于定位的后台应用
    Windows Phone 8 Nokia地图控件
    Windows Phone 8 MDIL编译与代码混淆工具
    Windows Phone 8 近场通信 NFC / Bluetooth Proximity
    Windows Phone 8 镜头应用 Lenses for Windows Phone 8
    Windows Phone 8 与 windows 8 开发技术概览
    嵌入式成长轨迹54 【Zigbee项目】【CC2430基础实验】【系统睡眠工作状态】
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5285974.html
Copyright © 2020-2023  润新知