python:套接字socket

笔记来源:《Python核心编程(第3版)中文版》

套接字是计算机网络数据结构。在任何类型的通信开始之前,网络应用程序必须创建套接字。可以将它们比作电话插孔,没有它将
无法进行通信。

Python 只支持 AF_UNIX、 AF_NETLINK、 AF_TIPC 和 AF_INET 家族。

第二种类型的套接字是基于网络的,它也有自己的家族名字 AF_INET,或者地址家族:因特网。另一个地址家族 AF_INET6 用于第 6 版因特网协议( IPv6)寻址。

Python 2.5 中引入了对特殊类型的 Linux 套接字的支持。套接字的 AF_NETLINK 家族(无连接[见 2.3.3 节])允许使用标准的 BSD 套接字接口进行用户级别和内核级别代码之间的 IPC。

针对 Linux 的另一种特性( Python 2.6 中新增)就是支持透明的进程间通信( TIPC)协议。 TIPC 允许计算机集群之中的机器相互通信,而无须使用基于 IP 的寻址方式。 Python 对TIPC 的支持以 AF_TIPC 家族的方式呈现

套接字地址:主机-端口对

面向连接的套接字:实现这种连接类型的主要协议是传输控制协议(更为人熟知的是它的缩写 TCP)。为 了创建 TCP 套接字,必须使用 SOCK_STREAM 作为套接字类型。 TCP 套接字的名字SOCK_STREAM 基于流套接字的其中一种表示。

无连接的套接字:实现这种连接类型的主要协议是用户数据报协议(更为人熟知的是其缩写 UDP)。为 了创建 UDP 套接字,必须使用 SOCK_DGRAM 作为套接字类型。


socket()模块函数

使用 socket.socket()函数,它一般的语法如下。
socket(socket_family, socket_type, protocol=0)

创建 TCP/IP 套接字,可以用下面的方式调用 socket.socket()。
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

创建 UDP/IP 套接字,需要执行以下语句。
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

套接字对象(内置)方法


socket_server.py

import socket
from time import ctime
#HOST 变量是空白的,这是对 bind()方法的标识,表示它可以使用任何可用的地址。
Host=''
Port=21567
BufSize=1024
ADDR=(Host,Port)

tcpsersock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpsersock.bind(ADDR)
tcpsersock.listen(5)
while True:
    print('waiting for connecting ....')
    tcpclisock,c_addr=tcpsersock.accept()
    print('.....connected from:',c_addr)
    while True:
        data=tcpclisock.recv(BufSize)
        if not data:
            break
        tcpclisock.send(bytes(ctime(),'utf-8')+data)
    tcpclisock.close()
tcpsersock.close()


socket_client.py

import socket
#声明协议类型
Host='127.0.0.1'
Port=21567
BufSize=1024
ADDR=(Host,Port)

tcpclisock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpclisock.connect(ADDR)

while True:
    data=input('in>>')
    if not data:
        break
    tcpclisock.send(bytes(data,'utf-8'))
    data=tcpclisock.recv(BufSize)
    if not data:
        break
    print(data.decode('utf-8'))
tcpclisock.close()


socket模块属性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值