socket编程(python实现)

socket 编程

套接字 位于应用层和传输层之间你的一个虚拟层,一个接口

步骤演示

  • socket服务端 (百度服务器)
  1. 绑定IP和端口
  2. 监听
  3. 等待连接
  4. 接受连接
  5. 接收数据
  6. 返回数据
  7. 断开连接
  • socket客户端(浏览器)
  1. 连接上百度的socket服务器
  2. 发送数据
  3. 接收数据
  4. 断开连接(服务端和客户端谁先断开都可以)

简单示例

  1. 页面返回ok
import socket
#创建socket对象
sk = socket.socket()

# 绑定ip和端口
sk.bind(('127.0.0.1',8000))

#监听
sk.listen()

#等待连接
while True:
    conn,addr=sk.accept() ##建立连接
    #接受数据
    conn.recv(2048)
    #返回数据
    conn.send(b'ok')
    #断开连接
    conn.close()

在这里插入图片描述

  • 是返回数据有问题,导致响应无效
  • http协议相关(了解一下)
    在这里插入图片描述
  • 将上面代码改变一下

在这里插入图片描述

  • 在网页上访问之后,控制台内打印出了信息
b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8000\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'

在这里插入图片描述

  • 改变代码(按照HTTP响应格式),之后即可成功访问数据
#返回数据
conn.send(b'HTTP/1.1 200 OK\r\n\r\nok')

在这里插入图片描述

  • 若数据中含有中文,则要设置字符集
conn.send(b'HTTP/1.1 200 OK\r\ncontent-type: text/html; charset=utf-8\r\n\r\n')
  1. 通过不同路径返回不同内容(包括返回html页面以及动态页面)
import socket
import time
#创建socket对象
sk = socket.socket()

# 绑定ip和端口
sk.bind(('127.0.0.1',8000))

#监听
sk.listen()

def rihan(url):
    return '欢迎来到 {}'.format(url)
def oumei(url):
    return 'welcome to {}'.format(url)

def home(url):
    with open('home.h
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值