代码如下:
#导入socket模块
import socket
#1创建一个socket套接字
tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#2connect 链接服务器,需要指定特定ip 和端口
baidu_id = "www.baidu.com"#百度
baido_port = 80 #端口80
tcp_socket.connect((baidu_id,baido_port))
#向指定端口发送消息。get表示请求方式,HTTP/1.1,http协议,版本1.1
#\r回车 \n换号 Host:主机域名 utf-8 编码格式
#向浏览器发送这句话,让浏览器返回首页信息
tcp_socket.send("GET / HTTP/1.1\r\nHost: baidu.com\r\n\r\n".encode("utf-8"))
# 接受浏览器返回的消息,一般情况下只接受头部信息就可以,这里用循环接受了所有信息
while True:
#1024表示一次接受最多1k数据
recv_data = tcp_socket.recv(1024)
#判断如果有数据,就接受数据,没有就退出循环
if recv_data:
#打印接受的数据到控制台
print(recv_data.decode("utf-8"))
else:
break
#关闭tcp 套接字
返回消息的头部:
HTTP/1.1 200 OK
Date: Mon, 19 Nov 2018 08:55:15 GMT
Content-Type: text/html
Content-Length: 14615
Last-Modified: Thu, 15 Nov 2018 02:03:00 GMT
Connection: Keep-Alive
Vary: Accept-Encoding
Set-Cookie: BAIDUID=E132241398943938F108BE56FAF128FD:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=E132241398943938F108BE56FAF128FD; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1542617715; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
ETag: “5becd3d4-3917”
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
Pragma: no-cache
Cache-control: no-cache
Accept-Ranges: bytes