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

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

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

  1. # -*- coding:utf-8 -*-
  2. # 创建客户端,类似于浏览器发送请求
  3.  
  4. import socket
  5.  
  6. target_host = "www.baidu.com" # 127.0.0.1
  7. target_port = 80
  8.  
  9. # 建立一个socket对象
  10. client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建TCP连接
  11. # socket.AF_INET 使用标准的IPv4地址或者主机名
  12. # socket.SOCK_STREAM 流式socket,应用于TCP
  13. # socket.SOCK_DGRAM 数据报式socket,应用于UDP
  14. # client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 创建UDP连接
  15.  
  16. # 连接客户端
  17. client.connect((target_host,target_port))
  18. # 连接到address处的套接字。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
  19. # client.connect_ex(host,port) 成功返回0,失败返回error
  20.  
  21. # 发送一些数据
  22. client.send(("GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n").encode())
  23. # 发送TCP数据。将string中的数据发送到连接的套接字。
  24. # 返回值是要发送的字节数量,该数量可能小于string的字节大小。
  25. # UDP发送
  26. # s.sendto(string[,flag],address)
  27. # 将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
  28. # client.sendto("AAABBBCCC",(target_host,target_port))
  29.  
  30. # 接收一些数据
  31. response = client.recv(4096)
  32. # s.recv(bufsize[,flag]) 接受TCP套接字的数据。
  33. # 数据以字符串形式返回,bufsize指定要接收的最大数据量。
  34. # flag提供有关消息的其他信息,通常可以忽略。
  35. # UDP接收
  36. # s.recvfrom(bufsize[.flag])
  37. # 接受UDP套接字的数据。与recv()类似,但返回值是(data,address)。
  38. # 其中data是包含接收数据的字符串,address是发送数据的套接字地址。
  39. # data,addr = client.recvfrom(4096)
  40.  
  41. print(response)
  42. # print(data)
  43. # 关闭连接
  44. # client.close()

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

python小练习---TCP客户端的更多相关文章

  1. python小练习---TCP服务器端

    针对于上一篇分享python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html我继续按书中内容,向下进行这里需要强调一个事py3 ...

  2. python编程系列---tcp客户端的简单实现

    实现流程如下: """ TCP客户端实现流程1. 创建一个tcp 客户端对象2. 与服务端建立连接3. 通过tcp socket 收发数据4. 关闭连接 关闭tcp &q ...

  3. python网络编程--TCP客户端的开发

    #导入socket模块 2 import socket 3 #参数说明 4 """ 5 socket类的介绍 6 创建客户端socket对象 7 socket.socke ...

  4. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  5. 170925_1 Python socket 创建TCP的服务器端和客户端

    [Python版本]3.6 [遇到的问题] 客户端和服务器端都遇到:TypeError: a bytes-like object is required, not 'str' [解决方案] 参考:ht ...

  6. python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  7. python黑帽子之tcp客户端

    在渗透测试过程中,我们经常会需要创建一个tcp客户端来连接服务,发送垃圾数据,进行模糊测试等任务,所以我们来用python创建一个简单的tcp客户端. import sockettarget_host ...

  8. Python TCP客户端

    import socket target_host="www.baidu.com" target_port=80 # 建立一个socket对象 client=socket.sock ...

  9. 【RL-TCPnet网络教程】第14章 RL-TCPnet之TCP客户端

    第14章      RL-TCPnet之TCP客户端 本章节为大家讲解RL-TCPnet的TCP客户端实现,学习本章节前,务必要优先学习第12章TCP传输控制协议基础知识.有了这些基础知识之后,再搞本 ...

随机推荐

  1. 初识JSP知识

    一.jsp概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP实际上就是Servlet. jsp = html ...

  2. 免费馅饼 HDU - 1176 (动态规划)

    都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...

  3. 使用rdbtools工具来解析redis rdb文件

    工欲善其事必先利其器,日常工作中,好的工具能够高效的协助我们工作:今天介绍一款用来解析redis rdb文件的工具,非常好用.会之,受用无穷! 一.rdbtools工具介绍 源码地址:https:// ...

  4. 2018 icpc-ecfinal后记

    打完这场终于可以回校0基础预习一个学期的课程了.    安详.jpg 可惜了,差了点罚时没有拿银,不过有了徐州差一分钟银牌的经历之后,已经没有什么能让我遗憾了. 仿佛又打了一场半年前的西安邀请赛,区别 ...

  5. 从LIst集合中安全的删除元素

    package cn.rocker.list; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...

  6. List数组

    大家好,我是蜀云泉.我的博文之中存在的不足之处希望大家包涵. 今天学习unity时,在实现某个功能的脚本中发现了List数组.关于List数组的问题我在学C#时已经接触了一点,但是我比较粗心和浮躁以前 ...

  7. 解决pycharm问题:module 'pip' has no attribute 'main'

    问题 更新pip之后,Pycharm安装package出现如下报错: 解决 找到安装目录下 helpers/packaging_tool.py文件,找到如下代码: 修改为如下,保存即可.

  8. hostnamectl 修改 CentOS7 主机名

    hostnamectl 控制主机名 # 显示状态 hostnamectl Static hostname: centos Icon name: computer-vm Chassis: vm Mach ...

  9. Linux拉你入门

    前言:为了做一个更优秀的程序猿,Linux是必不可少的,因此利用闲杂的时间来增加自己对Linux的认识 (一)关于Linux命令编(至于怎样安装vmvare这一个章节就先不介绍了) 1.基础命令 1. ...

  10. [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】

    概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...