python 3.5(socket)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 3.5(socket)相关的知识,希望对你有一定的参考价值。

Socket

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

socket和file的区别:

  • file模块是针对某个指定文件进行【打开】【读写】【关闭】
  • socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】

技术分享图片

 

 

简单测试

socket.server服务器端

#
!/use/bin/env python3 #-*-conding:UTF-8-*- import socket import sys # 创建 socket 对象 serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host = (10.10.10.68) port = 9999 # 绑定端口 serversocket.bind((host, port)) # 设置最大连接数,超过后排队 serversocket.listen(5) while True: # 建立客户端连接 client_socket, addr = serversocket.accept() print("连接地址: %s" % str(addr)) manager = 我勒个大草! + "\\r\\n" client_socket.send(manager.encode(utf-8)) client_socket.close()
socket.client客户端
#!/use/bin/env python3
#-*-conding:UTF-8-*-

import socket


# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #AF_INET使用IPV4,SOCK_STREAM使用TCP协议 (默认)

# 获取本地主机名
host = (10.10.10.68)

# 设置端口好
port = 9999

# 连接服务,指定主机和端口
s.connect((host, port))

# 接收小于 1024 字节的数据
manager = s.recv(1024)

s.close()

print (manager.decode(utf-8))

更多功能

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)

参数一:地址簇

  socket.AF_INET IPv4(默认)
  socket.AF_INET6 IPv6

  socket.AF_UNIX 只能够用于单一的Unix系统进程间通信

参数二:类型

  socket.SOCK_STREAM  流式socket , for TCP (默认)
  socket.SOCK_DGRAM   数据报式socket , for UDP

  socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。
  socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。
  socket.SOCK_SEQPACKET 可靠的连续数据包服务

参数三:协议

  0  (默认)与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议

 

 

 






以上是关于python 3.5(socket)的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Apereo CAS 3.5 CORE] Apereo CAS 3.5 #CAS的核心代码片段

Python 之 Socket编程(TCP/UDP)

Python干货socket中的listen()参数(数字)到底代表什么?

Android 实用代码片段

Android 实用代码片段

什么是使用 .NET 3.5 异步 System.Net.Sockets.Socket 停止数据流?