Python - 套接字编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boyun58/article/details/85157393

Python提供两种级别的网络服务访问。在较低级别,您可以访问底层操作系统中的基本套接字支持,这允许您为面向连接的协议和无连接协议实现客户端和服务器。

Python还具有库,可以提供对特定应用程序级网络协议的更高级别访问,例如FTP,HTTP等。

套接字是双向通信信道的端点。套接字可以在进程内,同一台机器上的进程之间或不同的进程之间进行通信。我们在python中使用socket模块来创建和使用套接字。

术语 描述
Domain 用作传输机制的协议族。这些值是常量,如AF_INET,PF_INET,PF_UNIX,PF_X25等。
type 两个端点之间的通信类型,通常是面向连接的协议的SOCK_STREAM和无连接协议的SOCK_DGRAM。
protocol 通常为零,这可以用于识别域内的协议的变体和类型。
hostname 网络接口的标识符 ,一个字符串,可以是主机名,点分四地址或冒号(可能是点)表示法中的IPV6地址,字符串“”,指定INADDR_BROADCAST地址。零长度字符串,指定INADDR_ANY或一个整数,按主机字节顺序解释为二进制地址。
port 每个服务器侦听在一个或多个端口上调用的客户端。端口可以​​是Fixnum端口号,包含端口号的字符串或服务名称。

socket Module
要创建套接字,必须使用套接字模块中提供的socket.socket()函数,该函数具有一般语法 -

s = socket.socket (socket_family, socket_type, protocol=0)

服务器套接字方法

  • s.bind()
    此方法将地址(主机名,端口号对)绑定到套接字。

  • s.listen()
    此方法设置并启动TCP侦听器。

  • s.accept()
    这被动地接受TCP客户端连接,等待连接到达(阻塞)。

客户端套接字方法

  • s.connect()
    此方法主动启动TCP服务器连接。

通用套接字方法

  • s.recv()
    此方法接收TCP消息

    扫描二维码关注公众号,回复: 4667180 查看本文章
  • s.send()
    该方法传输TCP消息

  • s.recvfrom()
    此方法接收UDP消息

  • s.sendto()
    该方法发送UDP消息

  • S.CLOSE()
    此方法关闭套接字

  • socket.gethostname()
    返回主机名。

例如
server

import socket

s = socket.socket()
host = socket.gethostname()
print(host)
port = 12345
s.bind(("127.0.0.1", port))#("host", port)

s.listen(5)
while True:
    c, addr = s.accept()
    print('Got connection from', addr)
    c.send(b'Thank you for connecting')
    c.close()

client

import socket

s = socket.socket()
host = socket.gethostname()
port = 12345

s.connect(("127.0.0.1", port))#("host", port)
print(s.recv(1024))
s.close()

猜你喜欢

转载自blog.csdn.net/boyun58/article/details/85157393