zoukankan      html  css  js  c++  java
  • python小练习---TCP客户端

    这是python黑帽子上的起始练习,我对其中的用到的函数做了注释,以便日后便于理解。

    该程序可以访问百度,返回响应信息。

    另外,我注释还有一部分UDP客户端的语句,TCP和UDP对比便于记忆。

    # -*- coding:utf-8 -*-
    # 创建客户端,类似于浏览器发送请求
    
    
    import socket
    
    target_host = "www.baidu.com" # 127.0.0.1
    target_port = 80
    
    # 建立一个socket对象
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建TCP连接
    # socket.AF_INET 使用标准的IPv4地址或者主机名
    # socket.SOCK_STREAM 流式socket,应用于TCP
    # socket.SOCK_DGRAM 数据报式socket,应用于UDP
    # client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 创建UDP连接
    
    # 连接客户端
    client.connect((target_host,target_port))
    # 连接到address处的套接字。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
    # client.connect_ex(host,port) 成功返回0,失败返回error
    
    # 发送一些数据
    client.send(("GET / HTTP/1.1
    Host: baidu.com
    
    ").encode())
    # 发送TCP数据。将string中的数据发送到连接的套接字。
    # 返回值是要发送的字节数量,该数量可能小于string的字节大小。
    # UDP发送
    # s.sendto(string[,flag],address)
    # 将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
    # client.sendto("AAABBBCCC",(target_host,target_port))
    
    # 接收一些数据
    response = client.recv(4096)
    # s.recv(bufsize[,flag]) 接受TCP套接字的数据。
    # 数据以字符串形式返回,bufsize指定要接收的最大数据量。
    # flag提供有关消息的其他信息,通常可以忽略。
    # UDP接收
    # s.recvfrom(bufsize[.flag])
    # 接受UDP套接字的数据。与recv()类似,但返回值是(data,address)。
    # 其中data是包含接收数据的字符串,address是发送数据的套接字地址。
    # data,addr = client.recvfrom(4096) 
    
    print(response)
    # print(data)
    # 关闭连接
    # client.close()

    推荐这篇文章对socket介绍的很详细  http://blog.csdn.net/rebelqsp/article/details/22109925

  • 相关阅读:
    hudson中 ANT 编译警告: 编码 UTF-8 的不可映射字符解决方法
    Jmeter与hudson,ant集成
    Hudson配置路径
    python 面向对象:封装---对象的属性可以是另一个类创建的对象
    python 面向对象:封装
    python3 f-string格式化字符串的高级用法
    iOS微信支付无法直接返回APP的问题
    学习git&github
    Appium之xpath定位详解
    selenium等待方式详解
  • 原文地址:https://www.cnblogs.com/zhaijiahui/p/6926197.html
Copyright © 2011-2022 走看看