首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python_web(一)实现HTTP客户端的程序

python_web(一)实现HTTP客户端的程序

作者头像
星辉
发布2019-01-15 09:51:27
1.8K0
发布2019-01-15 09:51:27
举报
#实现HTTP客户端的程序
# coding: utf-8

import socket


s = socket.socket()
host = 'g.cn'
port = 80
s.connect((host, port))
ip, port = s.getsockname()
print("本机 ip 和 port {} {}".format(ip, port))

http_request = "GET / HTTP/1.1\r\nhost:{}\r\n\r\n".format(host)
request = http_request.encode('utf-8')
print('请求', request)
s.send(request)

response = s.recv(1023)
print('响应', response)
print('响应的 str 格式', response.decode('utf-8'))

s.close()

以上程序中所用到的知识点如下:

  • socket模块

#操作系统用来进行网络通信的底层方案 #即用来发送/接收数据

  • 创建socket对象

用法: s = socket.socket()

  • 服务器端socket函数 connect()

用法: s.connect(address) #链接到address #一般address的格式为tuple(host, port) #链接出错,返回socket.error错误

  • socket函数 getsockname()

用法:ip, port = s.getsockname() #连接上后,可通过该函数得到本机的 ip 和端口 #返回值通常是tuple(ip, port)

  • 元组的值赋给不同的变量

用法:

a, b = (1, 2) print(a)

  • 另一种格式化输出

用法:print("{} {}".format(变量1, 变量2)) #好处:不用判断变量的格式

  • http请求格式

"GET / HTTP/1.1\r\nhost:g.cn\r\n\r\n" #目前该请求格式未包含body的请求 #GET 是请求的方法(POST也是一种) # / 是请求的路径 # HTTP/1.1 是一种HTTP版本 # host 是请求主机域名

  • str.encode('utf-8')

#编码:把 str 转换为 bytes,编码是 utf-8 str.decode('utf-8') #解码:把 bytes 转换为 str,编码是 utf-8 #返回值即为转换结果

  • socket函数 send()

用处:s.send(参数) #发送 HTTP 请求(即参数内容)给服务器 # send 函数只接受 bytes 作为参数

  • socket函数 recv()

用法:response = s.recv(1023) #接受服务器的响应数据 #参数即为接收的最大数据量 #返回值即为相应数据,为bytes类型

  • 客户端编程思想总结(socket)

创建套接字并链接至远端地址

s = socket.socket() s.connect()

连接后发送数据和接收数据

s.send() s.recv()

传输完毕后,关闭套接字

s.close

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档