python - socket模块1
import socketip_port=('127.0.0.1',9999)#买手机s = socket.socket()#买手机卡s.bind(ip_port)#开机s.listen(5)#等待电话conn,addr = s.accept()#conn 相当于一条通信线路#收消息recv_data = conn.recv(1024)#发消息send_data = recv_data.upper()conn.send(send_data)#挂电话conn.close()
import socketip_port = ('127.0.0.1',9999)#买手机s = socket.socket()#拨号s.connect(ip_port)#发送消息send_data = input(">>>:").strip()s.send(bytes(send_data,encoding='utf-8'))#收消息recv_data = s.recv(1024)print(str(recv_data,encoding='utf-8'))#挂电话s.close()
#循环输入,exit退出,可以输入空字符import socketip_port=('127.0.0.1',9999)#买手机s = socket.socket()#买手机卡s.bind(ip_port)#开机s.listen(5)#等待电话conn,addr = s.accept()#conn 相当于一条通信线路#收消息while True: recv_data = conn.recv(1024)if len(recv_data) == 0:break#发消息send_data = recv_data.upper() conn.send(send_data) #挂电话conn.close()
#循环输入,exit退出,可以输入空字符import socketip_port = ('127.0.0.1',9999)#买手机s = socket.socket()#拨号s.connect(ip_port)#发送消息while True: send_data = input(">>>:").strip()if send_data == 'exit': break # 输入exit 退出程序if len(send_data) == 0: continue #如果输入是空字符,退出本次循环,继续下次循环s.send(bytes(send_data,encoding='utf-8')) #收消息recv_data = s.recv(1024)print("----------------",type(recv_data))print(str(recv_data,encoding='utf-8'))#挂电话s.close()
三、
#一个客户端断开连接后,服务端还可以接受新的连接import socketip_port=('127.0.0.1',9999)#买手机s = socket.socket()#买手机卡s.bind(ip_port)#开机s.listen(5)#等待电话while True: conn,addr = s.accept()#conn 相当于一条通信线路 #收消息while True:try: #客户端强制断开(不是输入exit) 会出现异常。recv_data = conn.recv(1024)if len(recv_data) == 0:break#发消息send_data = recv_data.upper() conn.send(send_data)except Exception:break#挂电话conn.close()
#一个客户端断开连接后,服务端还可以接受新的连接import socketip_port = ('127.0.0.1',9999)#买手机s = socket.socket()#拨号 s.connect(ip_port)#发送消息while True: send_data = input(">>>:").strip()if send_data == 'exit': break # 输入exit 退出程序if len(send_data) == 0: continue #如果输入是空字符,退出本次循环,继续下次循环s.send(bytes(send_data,encoding='utf-8')) #收消息recv_data = s.recv(1024)print("----------------",type(recv_data))print(str(recv_data,encoding='utf-8'))#挂电话s.close()
#解决粘包问题send_data = bytes(send_data,encoding='utf-8') #编码成utf-8,字节,并把str转换为字节ready_tag = 'Ready|%s' %len(send_data)conn.send(bytes(ready_tag,encoding='utf-8'))feedback = conn.recv(1024) #收到客户端发送过来的Startfeedback = str(feedback,encoding='utf-8') #把收到的feedback 转换为strif feedback.startswith('Start'): conn.send(send_data)
#解决粘包的问题ready_tag = s.recv(1024) # Ready|9999ready_tag = str(ready_tag,encoding='utf-8')if ready_tag.startswith('Ready'): # Ready|9999msg_size = int(ready_tag.split('|')[-1])start_tag = 'Start's.send(bytes(start_tag,encoding='utf-8')) #给server发送Start,告诉server可以准备发送数据了recv_size = 0 #初始化数据大小recv_msg =b'' while recv_size < msg_size: recv_data = s.recv(1024) recv_msg += recv_data recv_size += len(recv_data)print('MSG SIZE %s RECE SIZE %s' % (msg_size, recv_size)) print(str(recv_msg,encoding='utf-8'))
四、socket简单ssh
#一个客户端断开连接后,服务端还可以接受新的连接import socketimport subprocessip_port=('127.0.0.1',9999)#买手机s = socket.socket()#买手机卡s.bind(ip_port)#开机s.listen(2)#等待电话while True: conn,addr = s.accept()#conn 相当于一条通信线路 #收消息while True:try: #客户端强制断开(不是输入exit) 会出现异常。recv_data = conn.recv(1024)if len(recv_data) == 0:break#发消息p=subprocess.Popen(str(recv_data,encoding='utf-8'),shell=True,stdout=subprocess.PIPE) res = p.stdout.read()if len(res) == 0: #处理输入的错误命令send_data = 'cmd err'else: send_data = str(res,encoding='gbk') #windows平台下解码成gbk,并且gbk转换为str #解决粘包问题send_data = bytes(send_data,encoding='utf-8') #编码成utf-8,字节,并把str转换为字节ready_tag = 'Ready|%s' %len(send_data) conn.send(bytes(ready_tag,encoding='utf-8')) feedback = conn.recv(1024) #收到客户端发送过来的Startfeedback = str(feedback,encoding='utf-8') #把收到的feedback 转换为strif feedback.startswith('Start'): conn.send(send_data)except Exception:break#挂电话conn.close()
#一个客户端断开连接后,服务端还可以接受新的连接import socketip_port = ('127.0.0.1',9999)#买手机s = socket.socket()#拨号 s.connect(ip_port)#发送消息while True: send_data = input(">>>:").strip()if send_data == 'exit': break # 输入exit 退出程序if len(send_data) == 0: continue #如果输入是空字符,退出本次循环,继续下次循环s.send(bytes(send_data,encoding='utf-8')) #收消息 #解决粘包的问题ready_tag = s.recv(1024) # Ready|9999ready_tag = str(ready_tag,encoding='utf-8')if ready_tag.startswith('Ready'): # Ready|9999msg_size = int(ready_tag.split('|')[-1]) start_tag = 'Start's.send(bytes(start_tag,encoding='utf-8')) #给server发送Start,告诉server可以准备发送数据了recv_size = 0 #初始化数据大小recv_msg =b'' while recv_size < msg_size: recv_data = s.recv(1024) recv_msg += recv_data recv_size += len(recv_data)print('MSG SIZE %s RECE SIZE %s' % (msg_size, recv_size)) print(str(recv_msg,encoding='utf-8'))#挂电话s.close()
转载于:https://www.cnblogs.com/pangguoping/p/5675715.html
python - socket模块1相关推荐
- python socket模块实现udp通信_Python基于socket模块实现UDP通信功能示例
Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import sock ...
- python socket模块作用_python之socket模块详解--小白博客
主要是创建一个服务端,在创建服务端的时候,主要步骤如下: 创建socket对象socket-->绑定IP地址和端口bind-->监听listen-->得到请求accept--> ...
- python socket模块[errno 113_error:
一 问题出现背景supervisorctl update error: , [Errno 113] No route to host: file: /usr/lib64/python2.7/socke ...
- Python socket模块
Socket(套接字) = IP地址:端口号,在网络层通过IP地址找到主机,在传输层通过端口号找到应用进程.每一个传输层连接唯一的被通信两端的两个套接字所确定. python中,通过socket()函 ...
- python socket模块 和pyqt_使用PyQt和Socket进行聊天编程[标准库]
我编写了一个程序,在客户端部分经常出现错误,我认为错误来自于client.py中的socket函数.我该怎么办? 服务器.py:# This is my server code , this code ...
- python socket模块recv函数_python socket 函数 模块
欢迎指正和留言讨论哦 import socket socket()函数 1,语法格式 socket.socket([family[, type[, proto]]]) family: 套接字家族可以使 ...
- python的socket模块_Python socket模块方法实现详解
这篇文章主要介绍了python socket模块方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 socket ssh (不带防止粘包的方 ...
- python转换函数使用_Python Socket模块中的IP转换函数
Python Socket模块中包含一些有用IP转换函数,说明如下: socket.ntohl(x) // 类似于C语言的ntohl(x) 把32位正整数从网络序转换成主机字节序. socket.nt ...
- python共享内存通信mapofview_python map eval strPython socket模块实现的udp通信功能示例...
本文实例讲述了Python socket模块实现的udp通信功能.分享给大家供大家参考,具体如下: socket介绍 socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要 ...
最新文章
- DotNetTextBox V3.0 所见即所得编辑器控件 For Asp.Net2.0(ver 3.0.9Beta)
- Java获取当前类名的两种方法
- JAVA学习之路 不走弯路,就是捷径
- git 入门教程之协同开发
- MongoDB入门及 c# .netcore客户端MongoDB.Driver2.9.1使用
- [云炬创业基础笔记] 第四章测试17
- 用C#实现仿Ruby的XML Builder
- Java NIO使用及原理分析
- SQL_server_2000安装过程指导
- 算法模板-广度优先遍历
- 使用Java 8在地图上流式传输
- kotlin编写后台_在Kotlin编写图书馆的提示
- oracle根据多个条件分别修改符合条件的记录
- diy 扫地机器人 滚刷_扫地机器人无法完成的使命,莱克吉米W7智能洗地机帮你完成...
- 深度学习之Image captioning的评分指标篇(BLEU、CIDEr)
- 如何卸载zabbix且删除
- 网络工程师还要学linux吗,网络工程师要学什么
- Skype国际版下载方法
- 爱奇艺2018届C++校招笔试
- python练习题---矩阵求和
热门文章
- servlet学习--Cookie小应用
- 选择问题(求第k个最小元素)
- IAR6.1的工程迁移到IAR6.5不能用的解决方法
- java怎么把大小写转换_JAVA 如何将String进行大小写转换
- Android Telephony分析(五) ---- TelephonyRegistry详解
- 红茶一杯话Binder(传输机制篇_中)
- Alibaba-Dexposed Bug框架原理及源码解析
- 基于uml的系统分析的网上商城_UML建模工具Enterprise Architect最新版有哪些新功能呢?立即查看...
- Social network Social computing(社会网络和社会计算)
- matlab绘制立体图