python网络编程

(1) TCP编程

① 客户端

1) 创建socket对象:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

a. AF_INET:指定使用IPv4协议 AF_INET6:建立IPv6协议

b. SOCK_STREAM:使用面向流的TCP协议

2) 建立连接

s.connect((IP地址,端口号)) IP地址和端口号是一个元组

3) 发送数据

s.send(url)

4) 接受数据

s.recv(字节数)

5) 关闭连接

s.close()

② 服务器端

1) 创建socket对象

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

2) 建立绑定

s.blind((IP地址,端口号))

表示本机地址:127.0.0.1

表示所有网络地址:0.0.0.0

端口号小于1024的端口号必须有管理员权限

3) 开始监听

s.listen(5) 传入等待连接的最大数量

4) 接收客户端的连接

while True:

sock,addr=s.accept()

t=threading.Thread(target=函数名,args=(sock,addr))

t.start

accept()会等待并返回一个客户端的连接和IP地址

每个连接都必须创建新线程来处理,否则无法接受其他客户端的连接

(2) UDP编程(面向无连接的协议)

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,但是不一定能到达

① 服务器端

1) 绑定端口

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.blind((IP地址,端口号))

SOCK_DGRAM:指定了Socket类型为UDP

2) 接收数据

while True:

data,addr=s.recvfrom(字节数)

s.sendto(内容)

recvfrom()方法返回数据和客户端地址与端口

服务器接收到数据后,直接调用sendto()就可以把数据用UDP发给客户端

② 客户端

1) 创建socket

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

2) 发送数据

s.sendto(数据,(IP地址,端口号))

客户端创建了socket对象无需connect()

3) 接收数据

s.recv(字节数)

4) 关闭连接

s.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值