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 编程的更多相关文章

  1. 转:Python 的 Socket 编程教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs. ...

  2. Python 3 socket 编程

    Python 3 socket编程 一 客户端/服务器架构 互联网中处处是C/S架构 1.C/S结构,即Client/Server(客户端/服务器)结构 2.在互联网中处处可见c/s架构 比如说浏览器 ...

  3. 最基础的Python的socket编程入门教程

    最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...

  4. python之socket编程(一)

    socket之前我们先来熟悉回忆几个知识点. OSI七层模型 OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标 ...

  5. Python:socket编程教程

    ocket是基于C/S架构的,也就是说进行socket网络编程,通常需要编写两个py文件,一个服务端,一个客户端. 首先,导入Python中的socket模块: import socket Pytho ...

  6. python学习------socket编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  7. Python基础socket编程

    Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...

  8. Python基础-socket编程

    一.网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的 ...

  9. Python 006- python socket编程详细介绍

    转自https://blog.csdn.net/rebelqsp/article/details/22109925 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供 ...

随机推荐

  1. 基于Python的接口自动化实战-基础篇之读写配置文件

    引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...

  2. 我是先学C语言还是先学C++,实不相瞒,鱼和熊掌可兼得!

    这是最近一周时间几个读者小伙伴所提的问题,我顺手截了两个图. 实不相瞒,这类问题之前也经常看到.     每次遇到这种问题,看起来很简单,但是打字一时半会还真说不清,想想今天周末了,写一篇文章来统一聊 ...

  3. 【C/C++编程入门学习】同样是数据类型,链表对比数组?哪一个更香?

    说起链表,第一反应:链表是一种数据类型!它可以用来存储同种类型多个批量数据.   有了这种认知,很容易去联想到数组,它也是一种数据类型,也可以用来存储同种类型的批量数据.初学者往往对数组的印象比较好, ...

  4. 扫描仪扫描文件处理-Photoshop批处理弹出色阶设置框解决

    为什么我录制动作明明设置的有色阶,最后批处理的时候仍然弹出了色阶设置框?   出现问题原因可能是你在录入设置色阶动作的时候,是彩色图片或者灰阶中的一种,而批处理的时候遇到了另外一种色彩模式.所以动作中 ...

  5. 【二分图】HEOI2012 朋友圈

    题目内容 洛谷链接 在很久很久以前,曾经有两个国家和睦相处,无忧无虑的生活着. 一年一度的评比大会开始了,作为和平的两国,一个朋友圈数量最多的永远都是最值得他人的尊敬,所以现在就是需要你求朋友圈的最大 ...

  6. Linux关联文件扩展名和打开程序

    手动为Linux关联文件扩展名与打开程序. 当Linux不认识某种扩展名的时候,需要为此扩展名创建一个MIME类型.Linux是依据MIME类型而不是扩展名来决定打开程序的. 再将此种MIME类型与某 ...

  7. zookeeper-(单机,伪集群)

    安装zookeeper(单机,伪集群):    1.下载 登陆zookeeper官网下载 https://zookeeper.apache.org/  或者  https://mirror.bit.e ...

  8. 构造函数原理 - Js对象

    构造函数内部原理 有new之后,函数变成构造函数,产生三步隐式变化 1.函数执行,在函数体顶端隐式加上var this = {}; 2.执行赋值,AO{ this : {name:'zhangsan' ...

  9. Python ( 学习 基础篇第一部 )

    目录 注释 注释的分类 注释的注意点 变量 变量的概念 变量的声明 变量的命名 变量的交换 变量的缓存机制 常量 进制 进制的转换 原码 反码 补码 六大数据类型 Number 的四大类 字符串 st ...

  10. D. Regular Bridge 解析(思維、圖論)

    Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ...