python之TCP客户端和服务器端编写

来源:互联网 发布:linux 更新软件 编辑:程序博客网 时间:2024/05/17 23:46

从今天开始学习《python黑帽子:黑客与渗透测试编程之道》,一定要认真,好好的学。

安装kali虚拟机

  安装虚拟机没有什么好写的,需要注意的一点是要分配足够的硬盘空间,一开始安装的时候,只分配了8G的硬盘,结果安装失败,后来改为30G的硬盘空间,就安装成功了。

安装python软件管理工具

  安装easy_install和pip两个python的软件管理工具,他们允许直接安装python的函数库,而不是手动下载、解压和安装。通过下面命令同时安装这两个工具:

root@kali:~#: apt-get install python-setuptools python-pip

  使用方法,安装github3.py模块:

root@kali:~#: pip install github3.py

安装IDE WingIDE

  从wingide下载WingIDE,下载.deb文件的安装包,终端运行:

root@kali:~/Downloads:dpkg -i wingide5_5.0.9-1_i386.deb

  安装成功

socket网络编程

TCP客户端

import sockettarget_host = '127.0.0.1'target_port = 12345#建立一个socket对象,AF_INET说明将使用标准的IPv4地址或主机名,SOCK_STREAM说明是一个TCP客户端client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#连接到服务器client.connect((target_ip, target_port))#发送数据client.send("i am TCP client")#接收数据response = client.recv(4096)print response

TCP服务器端

import socketimport threadingbind_ip = "127.0.0.1"bind_port = 12345server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#将套接字与指定的ip和端口相连server.bind((bind_ip, bind_port))#启动监听,并将最大连接数设为5server.listen(5)print "[*] listening on %s:%d" % (bind_ip, bind_port)#定义函数,回发信息给客户端def handle_client(client_socket):    #打印客户端发送的消息    request = client_socket.recv(1024)    print "[*] Received: %s" % request    #返回一个数据包,内容为ACK!    client_socket.send('ACK!')    client_socket.close()#服务端进入主循环,等待连接while True:    #当有连接时,将接收到的套接字存到client中,远程连接细节保存到addr中    client, addr = server.accept()    print "[*] Accepted connection from: %s:%d" % (addr[0], addr[1])    #创建新线程,回发信息给客户端    client_handler = threading.Thread(target=handle_client, args=(client,))    client_handler.start()

注:要保证TCP客户端连接到的ip和端口,与TCP服务器端监听的ip和端口相同
TCP客户端和TCP服务器端建立完成之后,运行服务器端程序,进入等待连接阶段……
运行客户端程序,得到如下结果:
TCP服务器端:
这里写图片描述
TCP客户端
这里写图片描述

0 0