flask_萧井陌视频学习(一)

Flask

文章导读:本文主要是介绍运用python语言中的Socket包来写简单的客户端和服务器。


客户端的创建:

import socket

#创建套接字
#AF_INET ipv4, SOCK_STREAM tcp
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#主机名
host = 'www.baidu.com'
#端口
port = 80
#连接
s.connect((host, port))

#连接后获取本机的ip和端口
ip, port = s.getsockname()
print('本机ip: {}, 端口: {}'.format(ip, port))

#构造一个HTTP请求
http_request = 'GET / HTTP/1.1\r\nhost:{}\r\n\r\n'.format(host)
#由于send函数只支持byte格式,而我们的为str格式所以要先转下格式
request = http_request.encode('utf-8')
print('转码后的request: {}'.format(request))
s.send(request)

#接受服务器响应,设定大小为1023字节
response = s.recv(1023)
#没有解码
print('response(没解码): ',response)
#解码之后
print('response(解码后): ', response.decode('utf-8'))


服务器创建:

import socket

#设置主机名和端口号
host = ''
port = 5000

#创建套接字
s = socket.socket()
#将主机名与端口号绑定
s.bind((host, port))

#用while来处理请求
while True:
    #监听,暂时不用管数字5
    print('before listen')
    s.listen(5)

    #当有客户端链接过来时获取客户端的 连接 和 ip
    #accept 返回两个参数 连接 和 ip地址
    print('before accept')
    connection, ip_address = s.accept()
    print('after accept')

    #recv接受来自客户端的数据, 返回的是bytes类型
    request = connection.recv(1024)

    #将bytes类型转换为utf-8类型并输出
    print('ip: {}, /request: {}'.format(ip_address, request.decode('utf-8')))

    #发送数据给客户端, b 表示为bytes类型
    http = b'HTTP/1.1 200 OK \r\n\r\n<h1>Hello Kevin</h1>'
    connection.sendall(http)
    #发送完毕,关闭本次连接
    connection.close()

当你写好代码以后接着在浏览器中输入你在程序中请求的端口号,我这的是5000端口【localhost:5000】得到如下界面:


注意:在服务器的编写时如果你的代码中这句没有加“HTTP/1.1 200 OK \r\n\r\n....”这一部分的话

http = b'HTTP/1.1 200 OK \r\n\r\n<h1>Hello Kevin</h1>'

当你在浏览器中输入localhost:5000后可能会访问到如下界面(原因在于你的浏览器是IE8以上)。


猜你喜欢

转载自blog.csdn.net/kevinguo000/article/details/80866698
今日推荐