socket套接字

  • 客户端

    • 创建客户端socket

    • 连接服务端

    • 与服务端新建的socket进行通讯收发数据

    • 使用结束后关闭socket

  • 服务端

    • 创建服务端socket

    • 绑定ip和端口号,让客户端可以访问

    • 设置监听,等待客户端接入

    • 如果有客户端接入,则创建新的socket对象,与之进行数据通讯

    • 收数据

    • 发数据

    • 关闭socket

socket服务端

服务端socket 需要使用socket模块中的socket类创建socket对象完成业务

步骤:
1.导包
2.创建socket对象
3.绑定ip和端口号
4.设置监听
5.等待用户接入服务端,创建新的socket对象
6.接收数据
7.发送数据
8.关闭socket

# 1.导包
import socket
# 2.创建socket对象
# socket.AF_INET 这个参数代表ipv4,下边绑定的IP地址就是ipv4协议的
# socket.SOCK_STREAM 这个参数代表使用的是TCP协议,要使用tcp协议收发数据
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 设置端口号复用(可以省略)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 3.绑定ip和端口号
# ip地址中 127.0.0.1代表本地回环地址, 就是主机本身的ip地址
# 无论你的主机ip是什么,我们都可以使用127.0.0.1找到你的主机
# 绑定的端口号是 8888
server_socket.bind(('127.0.0.1', 8888))

# 4.设置监听
# 128代表最大监听数量,也就是同时接入服务的客户端最多有128个
server_socket.listen(128)

# 5.等待用户接入服务端,创建新的socket对象
# 使用accept方法后会等待客户端接入后才能继续执行. 阻塞:暂时无法执行等待某个事件发生后才能继续执行
# 总结: 客户端接入后,会返回一个元组,元组中有两个元素,第一个是新的sokcet对象,第二个是ip和端口号
service_client_socket, ip_port = server_socket.accept()  # 拆包

# 6.接收数据
# 获取数据的字节数
# 字符型数据 = 字节型数据 + 字符集
recv_data = service_client_socket.recv(1024)
print(recv_data.decode('gbk'))

# 7.发送数据 发送时只能发送二进制数据
# TypeError: a bytes-like object is required, not 'str'
send_data = service_client_socket.send('教育'.encode('gbk'))

# 8.关闭socket
service_client_socket.close()
server_socket.close()

 客户端

步骤:
1.创建客户端socket
2.连接服务端
3.发送数据
4.接收数据
5.关闭socket

# 0.导包
import socket

# 1.创建客户端socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2.连接服务端''ip不写默认使用本地回环地址
client_socket.connect(('', 8888))

# 3.发送数据
client_socket.send('你吃了么?'.encode('gbk'))

# 4.接收数据
recv_data = client_socket.recv(1024)
print(recv_data.decode('gbk'))

# 5.关闭socket
client_socket.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值