关于socket的简单了解

什么是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)

这只是我个人的简单了解,如有错误,请多多指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值