一路狂飙

python socket实战

python代码规范

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.

IBM通信连接技术:https://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/

socket基础知识学完以后,必然会遇到"粘包"和"分包"的问题

struct结构体

当你需要在socket之间传输数据的时候,最好将数据打包,这样便于数据的交换。struct就是用来处理c语言中的结构体

最重要的三个函数:

  • pack(fmt, v1, v2, …) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
  • unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
  • calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存

下面再来说说fmt格式’!3I’:

  • ! 表示是网络字节序
  • 3 表示要打包3个vaule
  • I 表示 unsiged int,无符号整数,取值区间为[0,4294967295] 0xFFFFFFFF == 4294967295