qq网站登录网址,深圳小程序公司,旅游网页设计说明书,微信小程序卖货怎么注册1.什么是socket
官方定义#xff1a; 套接字#xff08;socket#xff09;是一个抽象层#xff0c;应用程序可以通过它发送或接收数据#xff0c;可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中#xff0c;并与网络中的其他应用…1.什么是socket
官方定义 套接字socket是一个抽象层应用程序可以通过它发送或接收数据可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
2.socket()函数
socket.socket([family[, type[, proto]]])family: 套接字家族可以使 AF_UNIX 或者 AF_INET。type: 套接字类型可以根据是面向连接的还是非连接分为 SOCK_STREAM 或 SOCK_DGRAM。protocol: 一般不填默认为 0。
AF_INET需经过多个协议层的编解码消耗系统cpu并且数据传输需要经过网卡受到网卡带宽的限制。AF_UNIX数据到达内核缓冲区后由内核根据指定路径名找到接收方socket对应的内核缓冲区直接将数据拷贝过去不经过协议层编解码节省系统cpu并且不经过网卡因此不受网卡带宽的限制。AF_UNIX的传输速率远远大于AF_INETAF_INET不仅可以用作本机的跨进程通信同样的可以用于不同机器之间的通信其就是为了在不同机器之间进行网络互联传递数据而生。而AF_UNIX则只能用于本机内进程之间的通信。3.UDP实现客户端与服务端通信
UDFClient
import socket
client socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
client.sendto(This is client hello.encode(utf-8),(127.0.0.1,8888))
data,server client.recvfrom(1024)
print(data.decode(utf-8))
client.close()UDFServer
import socket
server socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind((127.0.0.1,8888))
print(UDF Server Started)
while True:data,client server.recvfrom(1024)print(Receive client messages:,data.decode(utf-8))server.sendto(This is server hello.encode(utf-8),client)运行效果
4.TCP实现客户端与服务端通信
TCPClient
import socket
client socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((127.0.0.1,8080))
while True:print(请输入发送服务端的内容)send_data input()client.send(send_data.encode(utf-8))if send_data close:client.close()print(客户端关闭...)breakdata client.recv(1024).decode(utf-8)print(服务端响应的数据,data)TCPServer
import socketserver socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((127.0.0.1,8080))
# 同一时刻允许多少客户端进行通信
server.listen(5)
client,address server.accept()
print(服务端启动...)
while True:data client.recv(1024)msg data.decode(utf-8)if msg close:print(服务端关闭...)server.close()breakprint(客户端发送的内容:, msg)print(请输入回复内容)client.send(input().encode(utf-8))运行效果 5.requests模块发送http请求
requests模块常用方法
方法名描述requests.request(url)构造一个请求支持以下各种方法requests.get()发送一个Get请求requests.post()发送一个post请求requests.head()获取html请求头信息requests.put()发送put请求requests.patch()提交局部修改的请求requests.delete()提交删除请求
属性及方法
属性描述response.status_code响应状态码response.content将response对象转成二进制数据response.text把response对象转换成为字符串数据response.encoding定义response对象的编码response.cookie获取请求后的cookieresponse.url获取请求的地址response.json()内置的JSON解码器
使用requests模块发送一个带参数的get请求
url http://192.168.140.123:9090/product/list?typerate
headers {token: eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIyNTYyODM4MzI1NDMzNDI1OTIiLCJzdWIiOiIxIiwiaWF0IjoxNzA2MTY3Njc3LCJleHAiOjE3MDY3NzI0Nzd9.CB0YpMwQRxGKqqeUj29D0TiFgUO7YDOx04t2-ocfTdo
}
response requests.get(urlurl, headersheaders)
print(response.text)使用requests模块发送一个带参数的post请求
url http://192.168.140.123:9090/product/page
params {current: 1,size: 15
}
headers {token: eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIyNTYyODM4MzI1NDMzNDI1OTIiLCJzdWIiOiIxIiwiaWF0IjoxNzA2MTY3Njc3LCJleHAiOjE3MDY3NzI0Nzd9.CB0YpMwQRxGKqqeUj29D0TiFgUO7YDOx04t2-ocfTdo,Content-Type: application/json
}
response requests.post(urlurl, headersheaders, datajson.dumps(params))
print(response.text)