socket编程listen函数限制连接数的解决⽅案_PythonSocket⽹
络编程
Python Socket 通信过程
Python 提供了两个基本的 socket 模块:
Socket 它提供了标准的BSD Socket API。
SocketServer 它提供了服务器重⼼,可以简化⽹络服务器的开发。
下⾯讲解下 Socket模块功能。
Socket 类型
套接字格式:socket(family, type[,protocal]) 使⽤给定的套接族,套接字类型,协议编号(默认为0)来创建套接字
socket.AF_UNIX ⽤于同⼀台机器上的进程通信(既本机通信)
socket.AF_INET ⽤于服务器与服务器之间的⽹络通信
socket.AF_INET6 基于IPV6⽅式的服务器与服务器之间的⽹络通信
socket.SOCK_STREAM 基于TCP的流式socket通信
socket.SOCK_DGRAM 基于UDP的数据报式socket通信
socket.SOCK_RAW 原始套接字,普通的套接字⽆法处理ICMP、IGMP等⽹络报⽂,⽽SOCK_RAW可以;其次SOCK_RAW也可以处理特殊的IPV4报⽂;此外,利⽤原始套接字,可以通过IP_HDRINCL套接字选项由⽤户构造IP头
socket.SOCK_SEQPACKET 可靠的连续数据包服务
创建TCP Socket:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
创建UDP Socket:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Socket 函数
TCP发送数据时,已建⽴好TCP链接,所以不需要指定地址,⽽UDP是⾯向⽆连接的,每次发送都需要指定发送给谁。
服务器与客户端不能直接发送列表,元素,字典等带有数据类型的格式,发送的内容必须是字符串数据。
服务器端 Socket 函数
s.bind(address)
将套接字绑定到地址,在AF_INET下,以tuple(host, port)的⽅式传⼊,如s.bind((host, port))
s.listen(backlog)
开始监听TCP传⼊连接,backlog指定在拒绝链接前,操作系统可以挂起的最⼤连接数,该值最少为1,⼤部分应⽤程序设为5就够⽤了s.accept()
接受TCP链接并返回(conn, address),其中conn是新的套接字对象,可以⽤来接收和发送数据,address是链接客户端的地址。客户端 Socket 函数
链接到address处的套接字,⼀般address的格式为tuple(host, port),如果链接出错,则返回错误
功能与s.connect(address)相同,但成功返回0,失败返回errno的值
Python Socket 编程详细介绍g ist.github Python ⽹络编程 | 菜鸟教程w ww.runoob
import socket
def isOpen(ip,port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.shutdown(2)
return True
except:
return False
Using Python to check if remote port is open and accessible.
a_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
location = ("127.0.0.1", 80)
result_of_check = t_ex(location)
if result_of_check == 0:
print("Port is open")
else:
print("Port is not open")
OUTPUT
Port is not open
a_socket.close()
Code Faster with Line-of-Code Completions, Cloudless Processing
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论