0x01 环境
python2、 pycharm
0x02 程序
# -*- coding:UTF-8 -*-
import sockettarget_host='www.baidu.com'
tarfet_port=80
'''
target_host='localhost'
target_port=3345
data='ABCDEF'
'''
# 创建一个socket对象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接客户端
client.connect((target_host,target_port))
# 发送一些数据
client.send("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n")
# 接收一些数据
response=client.recv(4096)
print response
0x03 程序解释
下面这段代码是用来创建一个套接字,socket函数有三个参数
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
分别为:
socket(family,type[,protocal])
- family是地址系列,主要有:
值 | 含义 |
---|---|
socket.AF_INET | IPv4,默认 |
socket.AF_INET6 | IPv6 |
- type是套接字类型,主要有
值 | 含义 |
---|---|
socket.SOCK_STREAM | 创建的套接字基于TCP,默认 |
socket.SOCK_DGRAM | 创建的套接字基于UDP |
- protocal默认就行
当执行完这条语句就会成功创建一个套接字,下面这条语句是与服务器连接,
client.connect((target_host,target_port))
connect函数的参数是地址,地址的用一个元组表示
client.send("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n")
这条语句是发送数据语句,socket.send(string[, flags])
发送TCP数据,返回发送的字节大小,这个函数发送的大小有限,当数据太大,不一定一次会全部发送完数据,注意一下。
response=client.recv(4096)
recv是用来接收TCP数据,限定一次接收字节数,数据以字符串的形式返回