天天看点

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

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

安装kali虚拟机

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

安装python软件管理工具

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

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

安装IDE WingIDE

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

  安装成功

socket网络编程

TCP客户端

import socket

target_host = '127.0.0.1'
target_port = 

#建立一个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()

print response
           

TCP服务器端

import socket
import threading

bind_ip = "127.0.0.1"
bind_port = 

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#将套接字与指定的ip和端口相连
server.bind((bind_ip, bind_port))
#启动监听,并将最大连接数设为5
server.listen()
print "[*] listening on %s:%d" % (bind_ip, bind_port)

#定义函数,回发信息给客户端
def handle_client(client_socket):
    #打印客户端发送的消息
    request = client_socket.recv()
    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[], addr[])
    #创建新线程,回发信息给客户端
    client_handler = threading.Thread(target=handle_client, args=(client,))
    client_handler.start()
           

注:要保证TCP客户端连接到的ip和端口,与TCP服务器端监听的ip和端口相同

TCP客户端和TCP服务器端建立完成之后,运行服务器端程序,进入等待连接阶段……

运行客户端程序,得到如下结果:

TCP服务器端:

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

TCP客户端

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