Python基础-37-Socket 编程一

通信步骤

C/S结构 client/server

 

 

通信步骤:

服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。

在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。

客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

 

被动:当服务器开启,不会主动访问客户端,只是被动等待请求

阻塞:当有一个用户与服务端发起通信的时候,这个时候信道阻塞,其他用户无法访问

注:TCP发送数据时,已经建立好TCP连接,所以不需要指定地址,UDP是面向无连接的,所以每次发送要指定是发送给谁

服务端与客户端之间发送的数据必须是字符串

 

 

Socket实例

server端

 

# coding:utf-8

import socket

# 1.创建socket实例
# AF_INET:ipv4;AF_INET6:ipv6;AF_UNIX:unix系统间的数据传输
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 2.绑定身份
# 参数是一个双元素元组
# 第一个元素ip,为空代表当前设备所有ip
# 第二个元素端口,0-65535
sock.bind(("",8000))

# 3.监听
# listen(5):代表队列长度为5
sock.listen(5)

# 4.接收请求端地址信息
# content:代表负责通信的套接字
# address:代表请求者身份,身份由请求者ip+端口组成
content,address = sock.accept()

# 5.接收请求端数据
# 512表示单次接收的长度,单位是字节
recv = content.recv(512)
print(recv.decode())

# 6.发送数据到请求端
sendData = input(">>>")
content.send(sendData.encode())

# 7.关闭连接,释放端口
content.close()

client端

# coding:utf-8
import socket

# 1.创建socket实例
# AF_INET:ipv4;AF_INET6:ipv6;AF_UNIX:unix系统间的数据传输
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 2.连接服务端
# 客户端的端口是随机分配的,这里连接的服务端为服务端的ip和端口
sock.connect(("127.0.0.1",8000))

# 3.发送数据给服务端
sendData = input(">>>")
sock.send(sendData.encode())

# 4.接收服务端数据
recv = sock.recv(512)
print(recv.decode())

# 5.关闭连接
sock.close()

运行

1)先运行server端等待连接,再运行client端连接server端

2)客户端连接后发送信息给服务端,服务端接收到客户端信息

3)服务端发送信息给客户端后,服务端连接结束

4)客户端接收到服务端信息后,客户端连接结束,一次交互结束

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值