python <12> socket 编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python <12> socket 编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3035字,纯文字阅读大概需要5分钟。
内容图文
1.socket编程需要两个部分 服务器与客户端我们的python中调用 socket包就不需要自己写协议了(socket编程中windows 与Linux中的效果是完全不相同了,次代码最好是放在Linux上运行)
# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki # 服务器 import socket server = socket.socket() # 声明socket类型,同时生成socket连接对象 server.bind(('localhost', 6969)) # 绑定要监听的端口此时绑定的是本地 server.listen() # 监听 括号里面的就是最大允许链接 print('等待电话打进来') coon, addr = server.accept() # 等待 (此时上面加一个while 就可以多个电话打进来并且进行通话) # coon 就是客户端连过来而在服务器端为其生成的一个连接实例 # addr 就是地址 print('电话打进来了') print(coon, addr) # 将coon 与addr 显示出来 while True: # 此时就可以一直不停的发送数据了, 此时的效果就是一个电话可以无阻碍的通话 # 如果此时没有true的话就只能接收一次了 data = coon.recv(1024) # 接收数据 print('recv:', data.decode()) # 此时注意我们需要吧接收的数据解码,因为发过来的是byte类型 coon.send(data.upper()) # 将数据里面的字母转化为大写发送 server.close()
2.客户端
# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki # 客户端 import socket client = socket.socket() # 声明socket类型,同时生成socket连接对象 client.connect(('localhost', 6969)) # 连接 while True: ccc = input('>>:') if ccc == '': # 判断是否为空 continue client.send(ccc.encode('utf-8')) # 发送byte类型 data = client.recv(1024) # 接收返回 print(data.decode()) # 解码
那下面我们可以了解一下 完整的程序了
# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki # 第一步1.import 模块 然后实例一个模块 若是服务器的话要绑定 在监听,然后等待(返回两个值) 然后接收然后在发送 import os import socket server = socket.socket() server.bind(('localhost', 9999)) # 绑定地址 server.listen() # 监听 print('等待电话') while True: con, addr = server.accept() print('电话来了') while True: data = con.recv(1024) # 接收数据 if not data: print('客户端已断开') break print(data.decode()) cmd_res = os.popen(data.decode()).read() con.send(str(len(cmd_res)).encode('utf-8')) if len(cmd_res) == 0: cmd_res = 'cmd_res has no thing....' client_re = con.recv(1024) # 此处的精妙(隔开两个send) con.send(cmd_res.encode('utf-8')) # 返回数据 server.close() # 关闭 # socker粘包(两个send连在一起缓冲区) 例如 # con.send(str(len(cmd_res)).encode('utf-8')) # con.send(cmd_res.encode('utf-8')) # 此时系统将两个send当作一个发。就需要在中间加一个client_re = con.recv(1024) 来等待 就可以做到 # 也就是等到客户端确认
2.2客户端
# _*_coding:utf-8_*_ # /usr/bin/env python3 # Author:book Miki # 客户端 第一步导入模块,然后实例化一个 然后链接,然后发送 然后接收反回 import socket client = socket.socket() client.connect(('localhost', 9999)) while True: data = input('>>:').strip() if len(data) == 0: continue client.send(data.encode('utf-8')) re_size = client.recv(1024).decode() print(re_size) client.send(b'True') re_cmd_two = 0 print('re_cmd_two:', type(re_cmd_two)) print('re_size: ', type(re_size)) print('大小为:', re_size) while re_cmd_two <= int(re_size): re_cmd_one = client.recv(1024) print(re_cmd_one.decode()) re_cmd_two = re_cmd_two + len(re_cmd_one.decode()) print(re_cmd_two) print(re_cmd_two)
内容总结
以上是互联网集市为您收集整理的python <12> socket 编程全部内容,希望文章能够帮你解决python <12> socket 编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。