从使用Python开发一个Socket示例说到开发者的思维和习惯问题

今天主要说的是一个开发者的思维和习惯问题。

思维包括编程的思维和解决一个具体问题的分析思维,分析思路,分析方法,甚至是分析工具。

无论是好习惯还是不好的习惯,都是在者一天一天的思维中形成的。那些不好的习惯,久了确实不好改。所以说,如果今天你认识到了,那么就从今天开始改,早改早受益,晚改痛苦一生。

先说一下今天的引子,那就是使用Python开发一个简单的Socket应用,就是一个client/server通信的小例子。

假设现在需要我们使用python开发一个socket的聊天应用,可能会遇到下面的问题。

python没有用过,怎么办呢?

我用过python,可是我们开发过socket方面的应用?

我还不知道socket是什么东西呢?

socket大概我记得,套接字吗,ip+port,具体的tcp和udp我不不太清楚。

其实我们几乎每天都可能会解决一些我们没有解决过的问题,有可能是没有用过的类库,没有听过的技术,没有用过的语言,甚至是没有听过的概念。

其实,这些都不是问题。只要你有一个较好的思维习惯,较好的思维方式,较好的解决问题的方法,那你就什么都不用怕了。

大家可以仔细的看看和研究一下,其实这10年20年,没有出现任何新的技术,出现的都是新的概念,所谓的新技术都是对老技术的挖掘,重新组合,应用到新的领域,用新的视角解决新的问题,其实用到的根本还是那些技术的技术知识。

这些技术知识包括:

语言的语法,语言的基本结构(顺序,选择,循环)。

技术的基础理论,例如,数据库理论,文件系统理论,今天我们演示用的socket通信理论。

当然了,除了上面的硬技术,你还需要一些软技术。例如,思考方法,好的习惯,好的工具,好的沟通,好的理解力,好的领悟力。

现在出现的东西都是上面这些东西的组合,或者将这些组合解决了新出现的问题,又或者是变了一种思路来解决老问题,等等诸如此类的组合。

举个例子来说吧。“云计算”,很火吧,各种语言的云计算,各种框架的云计算,但是如果你陷入这些语言和框架,结果可想而知,精力被耗尽,但是不见得真正理解多少,甚至是框架都会不完,因为太多了。

这就需要我们加强理论基础知识,云的理论基础就是分布式,分布式出来很多年了吧。好了,先学习和理解分布式,理解云就迎刃而解了。分布式+调度+服务器集群+通信=云,你看看,哪个是新的,哪个是以前没有的,对不对呢!

就拿socket举例子吧。只举个小例子,就是分别用tcp和udp实现聊天。

我们先不要google找python socket代码。我们先回忆一下我们学过的socket通信部分,或者说先找一本socket通信的书或者文章,看看通信的原理和过程。当然,不是要你通篇看完,通篇理解,完全弄懂。tcp和udp里面的细节你可能不知道,没有关系,如果需要的话,后面再来看。但至少你可以使用伪代码描述tcp和udp的通信流程,或者在纸上可以画出通信流程,使用流程图描述你要实现的功能。

别小看伪代码和流程图这两个简单的东西,它代表了你的思考过程,你的思维方法,和你选择的思维工具,是良好习惯的开端,一定要坚持,直到这些都成为你的习惯。

有了这些东西,别人会对你高看一眼的,会觉得你比较靠谱,就会给你更有挑战的工作,给你表现的机会,那么你就。。。。。。。。。。。。。。大家都明白的。你的各种想法都有机会实现了,否则就都是空白。

图1 tcp通信图

上图是一张socket的tcp通信简图,我们都知道tcp的通信需要三次握手。tcp是可靠的、面向连接的、尽力传输的协议,而udp是不可靠的、面向非连接的、不尽力传输的协议。但是不可靠不代表它没有用,udp有自己的应用场景,语音和视频几乎都在使用udp协议,它的不可靠只是相对于tcp来说的,但是它的好处就是效率,高效在某些场景要比可靠性重要。这就涉及trade-off了,也就是权衡,需要根据你的应用权衡利弊,然后进行选择。

时间: 2024-10-30 13:46:07

从使用Python开发一个Socket示例说到开发者的思维和习惯问题的相关文章

Python开发一个csv比较功能相关知识点汇总及demo

Python 2.7 csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二次时,内容为空 iterator An object representing a stream of data. Repeated calls to the iterator's __next__() method (or passing it to the built-in function n

怎样在不使用框架的基础上开发一个 Javascript 组件

本文讲的是怎样在不使用框架的基础上开发一个 Javascript 组件, 许多开发者(包括我)犯的一个错误是当遇到问题时他们总是自上而下地考虑问题.他们想问题的时候,总是从考虑框架(Framework),插件(Plugin),预处理器(Pre-processors),后处理器(Post-processors),面向对象模式(objected-oriented patterns)等等这些方面出发,他们也可能会从他们以前看过的一篇文章来考虑.而这时如果有一个生成器(Generator)的话,他们当然

python实现简单socket程序在两台电脑之间传输消息的方法_python

本文实例讲述了python实现简单socket程序在两台电脑之间传输消息的方法.分享给大家供大家参考.具体分析如下: python开发简单socket程序在两台电脑之间传输消息,分为客户端和服务端,分别在两台电脑上运行后即可进行简单的消息传输,也可以在一台电脑上测试,设置两个不同的端口即可. # Save as server.py 服务端代码 # Message Receiver import os from socket import * host = "" port = 13000

与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室

原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 作者:webabcd 介绍与众不同 windows phone 7.5 (sdk 7.1) 之通信 实例 - 基于 Socket TCP 开发一个多人聊天室 示例1.服务端ClientSocketP

与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 作者:webabcd 介绍与众不同 windows phone 7.5 (sdk 7.1) 之通信 实例 - 基于 Socket UDP 开发一个多人聊天室 示例1.服务端Main.cs /* *

安卓开发-一个悲催的菜鸟,关于安卓socket传输手机蓝牙地址的问题。。。

问题描述 一个悲催的菜鸟,关于安卓socket传输手机蓝牙地址的问题... 最近做一个项目,是关于用安卓编程获取手机的蓝牙地址,并且把获取的蓝牙地址通过socket传输到服务器端,真的很急,希望大神能够帮忙解决,一个悲催的工科妹子在此谢过了... client: package Socketprocess; import java.net.*; import java.io.*; public class Client{ public void getadd() { } public stati

自己动手开发一个 Web 服务器(三)

自己动手开发一个 Web 服务器(三) 在第二部分中,你开发了一个能够处理HTTPGET请求的简易WSGI服务器.在上一篇的最后,我问了你一个问题:"怎样让服务器一次处理多个请求?"读完本文,你就能够完美地回答这个问题.接下来,请你做好准备,因为本文的内容非常多,节奏也很快.文中的所有代码都可以在Github仓库下载. 首先,我们简单回忆一下简易网络服务器是如何实现的,服务器要处理客户端的请求需要哪些条件.你在前面两部分文章中开发的服务器,是一个迭代式服务器iterative serv

自己动手开发一个 Web 服务器(一)

自己动手开发一个 Web 服务器(一) 有一天,一位女士散步时经过一个工地,看见有三个工人在干活.她问第一个人,"你在做什么?"第一个人有点不高兴,吼道"难道你看不出来我在砌砖吗?"女士对这个答案并不满意,接着问第二个人他在做什么.第二个人回答道,"我正在建造一堵砖墙."然后,他转向第一个人,说道:"嘿,你砌的砖已经超过墙高了.你得把最后一块砖拿下来."女士对这个答案还是不满意,她接着问第三个人他在做什么.第三个人抬头看着天空

开发一个调试JSP的Eclipse插件

js 本文通过开发一个JSP 编辑器插件的示例,介绍了 Eclipse 中设置 JSP 断点的方法,以及如何远程调试 JSP.作为基础知识,本文的前两部分描述了 JAVA Debug 和 JSR-45 的基本原理. 环境要求: 本文的代码是在 Eclipse3.0.0,JDK1.4.2 和 Tomcat5.0.5 上测试过的. JAVA 调试框架(JPDA)简介 JPDA 是一个多层的调试框架,包括 JVMDI.JDWP.JDI 三个层次.JAVA 虚拟机提供了 JPDA 的实现.其开发工具作为