Python socket网络编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python socket网络编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3341字,纯文字阅读大概需要5分钟。
内容图文
![Python socket网络编程](/upload/InfoBanner/zyjiaocheng/648/6825161b421a4daf9d0d13b411f6cb29.jpg)
伪代码(方便理解)
发送端
import socket socket.TCP/IP connect(a.ip, a.port) socket.send(hello) socket.recv() socket.close()
接收端
import socket socket.TCP/IP listen(0.0.0.0, 3306) waiting() recv() send
实例
socket消息发送与接受simple
服务端
1 # 服务器端 2 import socket 3 4 server = socket.socket() 5 server.bind(('localhost', 5520)) # 绑定要监听端口 6 server.listen(5) # 监听 7 8 print("我要开始等电话了") 9 while True: 10 conn, addr = server.accept() # 等电话打进来 11 # conn就是客户端连过来二在服务器端为其生成的一个连接实例 12 13 print("电话来了") 14 while True: 15 data = conn.recv(1024) 16 print("recv:", data.decode()) 17 if not data: 18 print("client has lost...") 19 break 20 conn.send(data.upper()) 21 22 server.close()
客户端
# 客户端 import socket client = socket.socket() # 声明socket类型,同时生成socket连接对象 client.connect(('localhost', 5520)) while True: msg = input(">>:").strip() if len(msg) == 0: continue # client.send(b"Hello World!") client.send(msg.encode(encoding="utf-8")) data = client.recv(1024) print("recv:", data.decode()) client.close()
先运行服务端 再 运行客户端
socket实现简单的ssh
服务端
import socket import os import time server = socket.socket() server.bind(('localhost', 9999)) server.listen() while True: conn, addr = server.accept() print("new conn:", addr) while True: print("等待新指令") data = conn.recv(1024) if not data: print("客户端已断开") break print("执行指令:", data) cmd_res = os.popen(data.decode()).read() #接受字符串,执行结果还是字符串 if len(cmd_res) == 0: cmd_res = "cmd hs no output..." conn.send(str(len(cmd_res.encode())).encode("utf-8")) # 先发大小给客户端 # time.sleep(0.5) client_ack = conn.recv(1024) # wait client to confirm conn.send(cmd_res.encode("utf-8")) server.close()
客户端
import socket client = socket.socket() client.connect(('localhost', 9999)) while True: cmd = input(">>:").strip() if len(cmd) == 0: continue client.send(cmd.encode("utf-8")) cmd_res_size = client.recv(1024) # 接受命令结果的长度 print("命令结果大小:", cmd_res_size) client.send("准备好接受了".encode("utf-8")) received_size = 0 received_data = b'' while received_size < int(cmd_res_size.decode()): data = client.recv(1024) received_size += len(data) # 每次收到的有可能小于1024,所以必须用len判断 # print(data.decode()) received_data += data else: print("cmd res receive done...", received_size) print(received_data.decode()) # cmd_res = client.recv(1024) # print(cmd_res.decode()) client.close()
先运行服务端,再运行客户端。示例:在客户端里输入 ipconfig
![Python socket网络编程 - 文章图片](/upload/getfiles/0001/2021/5/2/20210502123554885.jpg)
![Python socket网络编程 - 文章图片](/upload/getfiles/0001/2021/5/2/20210502123554964.jpg)
>>:ipconfig 命令结果大小: b'950' cmd res receive done... 950 Windows IP 配置 以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 3: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 4: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::80b9:520a:30e8:b823%19 IPv4 地址 . . . . . . . . . . . . : 10.64.226.255 子网掩码 . . . . . . . . . . . . : 255.255.192.0 默认网关. . . . . . . . . . . . . : 10.64.192.1 以太网适配器 蓝牙网络连接: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . :View Code
内容总结
以上是互联网集市为您收集整理的Python socket网络编程全部内容,希望文章能够帮你解决Python socket网络编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。