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數據,限定一次接收字節數,數據以字符串的形式返回