什么是socket??
socket是关于tcp/ip协议的一套编程api 是通用的一套规范 在很多语言中都是通用的
socket基础理论
如果问 什么是socket编程???
socket编程本质上就是相应的编程语言提供的一套操作互联网的api
s.bind() 绑定(主机,端口号)到套接字
s.close() 关闭连接
s.listen() 开始TCP监听s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来
s.connect() 主动初始化TCP服务器连接
s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
s.recv() 接收数据
s.send() 发送数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完,可后面通过实例解释)
s.sendall()
发送完整的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用send直到发完)如果是http协议的话 就是连接一次就会断掉 知道下一次申请连接才会连接 (访问网页一般就是这样) 为了减轻服务器的压力
如果是类似于网游的话就是常连接 会一直保持连接。
这里简单实现以下:
使用客户端和服务端
客户端代码:负责接受(从服务端获取数据)
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 表示常连接
# 进行连接
client.connect(("localhost",8080))
# 将 内容发送出去
# client.send("test".encode())
while True:
data = client.recv(1024)
# 进行传输的数据都是二进制数据
print(data.decode())
服务端:负责发送数据
import socket
import time
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #现在是基于tcpde
# 选择监听的地址和端口
server.bind(("0.0.0.0",8080))
# 开始监听
server.listen()
# 接受连接
# 在这个地方会进行阻塞
client,addr_str = server.accept()
while True:
# 规定接受数据的大小
# data = client.recv(1024)
# print(data)
client.send("你还活着吗,大哥??".encode())
time.sleep(2)
这只是我个人的简单了解,如有错误,请多多指正!!!