python------Socket网略编程
上节课程回顾:
静态变量:与类无关,不能访问类里的任何属性和方法。
类方法:只能访问类变量。
属性:把一个方法变成静态属性,
反射:
__new__:先于__init__执行;
__call__:
class Foo(object):
def __call__()
print "call" #这是什么??? #Foo() #后面跟一个括号是实例化
Foo()() #后面跟2个括号是执行call方法
抓住异常:
try
......
except (ValueError,KeyError), e #in 2.7
except (ValueError,KeyError) as e #in 3.x
else: #没发生异常就执行
finally #无论如何都执行
raise (触发自己写的异常)
except Exception as e #放在异常处理最后面,
异常处理:
断言(assert): 返回为假就不往下执行了。(例如银行转账,要确保正确才能转账)
例如:assert type(XXX) is str
本节内容:
一.动态导入模块

import importlib
__import__('import_lib.metaclass') #这是解释器自己内部用的
#importlib.import_module('import_lib.metaclass') #与上面这句效果一样,官方建议用这个
#__metaclass__用来定义这个类以怎样的形式被创建(我们很少用到)
本节课内容:
1.socket :网络上的数据收发。
tcp/ip send ,recv
udp
family address (地址簇):
AF.INET (ipv4)
AF.INET6
AF.UNIX (local
socket protocol type (协议类型)
sock.SOCK_STREAM (tcp/ip)
sock.SOCK_DGRAM
服务端步骤:
server = socket.socket(AF.INET,sock.SOCK_STREAM)
server.bind(localhost,9999)
server.listen()
while True:
conn, addr = server.accept() #阻塞
while True:
print("new conn", addr)
data = conn.recv(1024) #不应该超过8192(8k)#recv默认是阻塞的
if not data:
break #客户端已断开,conn.recv收到的就是空数据,
print(data)
conn.send(data.upper())
客户端步骤:
client = socket.socket()
client.connect(serverip,9999)
client.send(data)
client.recv(data)
import socket
import os
server = socket.socket()
server.bind(('localhost',1111)) server.listen() while True:
conn,addr = server.accept()
print("new conn:",addr)
while True:
data = conn.recv(1024)
if not data:
print("客户端已断开")
break
print("执行指令:", data)
cmd_res = os.popen(data.decode()).read() #接收字符串,执行结果也是字符串
conn.send(cmd_res.encode("utf-8")) server.close()
import socket
client = socket.socket()
client.connect(('localhost',1111)) while True:
cmd = input(">>:").strip() #cmd = input(b">>:").strip()如果前面直接加b,则只能传英文
if len(cmd) == 0 : continue
client.send(cmd.encode())
cmd_res = client.recv(1024) print(cmd_res.decode()) client.close()
运行结果:
>>:ipconfig Windows IP 配置 以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 2: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 4: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 5: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : workgroup
本地链接 IPv6 地址. . . . . . . . : fe80::1585:c613:2947:4558%17
IPv4 地址 . . . . . . . . . . . . : 172.25.81.3
子网掩码 . . . . . . . . . . . . : 255.255.0.0
默认网关. . . . . . . . . . . . . : 172.25.81.1
注:1.服务器与客户端解码编码四次。
2.(1024)传输与接收数据大小的问题:
缓冲区:比如一次只能接收1024,发送了2000,省下的900左右会存在缓冲区了,等下次发送,但这样会乱,怎么解决?
答:多收几次。
问:但具体多收几次呢?
答:服务器自己计算一下自己将要给客户端多大的数据,几次能接收完,先把次数发给客户端。
python------Socket网略编程的更多相关文章
- python------Socket网略编程+动态导入模块
上节课程回顾: 静态变量:与类无关,不能访问类里的任何属性和方法. 类方法:只能访问类变量. 属性:把一个方法变成静态属性, 反射: __new__:先于__init__执行: __call__: c ...
- python/socket编程之粘包
python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Python Socket 网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- Python Socket,How to Create Socket Server? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Python Socket,How to Create Socket Cilent? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- python socket编程---从使用Python开发一个Socket示例说到开发者的思维和习惯问题
今天主要说的是一个开发者的思维和习惯问题. 思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具. 无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的.那些不好的 ...
- PYTHON SOCKET编程简介
原文地址: PYTHON SOCKET编程详细介绍 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 Soc ...
- python socket编程笔记
用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台) 人生苦短之我用Python篇(socket编程) python之路 sock ...
随机推荐
- P4725 【模板】多项式对数函数
思路 考虑对ln求导后处理 根据复合函数的求导法则\(g'(f(x))=g'(x)f'(x)\) 得到 \[ \ln F(x) '= \frac{F'(x)}{F(x)} \] 最后对这个式子积分 \ ...
- HDU4745--区间DP+回文串
这题的题意为,给你一个环状的字符串,有两只兔子分别从某任意的石头上开始跳跃.一只顺时针跳.一只逆时针跳.两只兔子每一次落脚处石头的质量都相同.兔子要一步一步的跳,且不能跳到之前跳到过的地方.总的来说, ...
- Series.str——字符串批量处理方法
针对dataframe中的某一行(或列)想做批量字符串处理时,可采用此方法 series.str.python内置的str方法 例如: series.str.replace('A','B') # ...
- Bean的Scope
Bean的scope: 1.Singleton(单例): 一个Spring容器只有以这个Bean实例. 2.prototype(多例): 每次调用新建一个Bean的实例. 3.request:一个ht ...
- 数据分析库之matplotlib
一.Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis 水平和垂直的轴线 轴标签 axisLabel 水平和垂直的轴标签 x轴和y轴刻度 tick 刻度标示 ...
- eslint详细配置
vue-cli3按照官网教程配置搭建后,发现每次编译,eslint都抛出错误, 修改配置在 .eslintrc.js中修改 或者 关闭eslint 1.关闭eslint 直接注释掉package ...
- 网络(socket)编程
一.网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系: ...
- [hdu P4114] Disney's FastPass
[hdu P4114] Disney's FastPass Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 ...
- zabbix3.4.7实操总结二
一,Zabbix Web操作深入 1.1 Zabbix Web下的主机和模版以及监控项的添加方式 (1)创建一个模版 我们所有的功能几乎都是在模版中定义的 我们再点进新创建的模版查看 模版里几乎可以设 ...
- js的预解析详解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...