套接字 socket
family - 设置ip协议类型, AF_INET(ipv4), AF_INET6(ipv6)
AF_INET(又称 PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通信。
选择 AF_INET 的目的就是使用 IPv4 进行通信。因为 IPv4 使用 32 位地址,相比 IPv6 的 128 位来说,计算更快,便于用于局域网通信。
而且 AF_INET 相比 AF_UNIX 更具通用性,因为 Windows 上有 AF_INET 而没有 AF_UNIX。
type - 设置传输协议类型, SOCK_STREAM(TCP),SOCK_DGRAM(UDP)
SOCK_STREAM 是有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送。
SOCK_DGRAM 是无保障的面向消息的socket , 主要用于在网络上发广播信息。
SOCK_STREAM是基于TCP的,数据传输比较有保障。SOCK_DGRAM是基于UDP的,专门用于局域网,基于广播
SOCK_STREAM 是数据流,一般是tcp/ip协议的编程,SOCK_DGRAM分是数据包,是udp协议网络编程
如果需要传输的数据是准确的,建议采用TCP,也就是SOCK_STREAM
如果你传输的是视频音频等数据,丢几个包也无所谓的,可以采用UDP,也就是SOCK_DGRAM
from socket import *
服务器
server = socket()
server.bind((“ip地址”, 端口号))
server.listen(512)
while True:
print(“监听中…”)
connect, address = server.accept()
message1 = connect.recv(1024)
print(message1.decode(encoding=“utf-8”))
message2 = input(“输入:”)
connect.send(message.encode())
connect.close()
客户端
client = socket()
client.connect((“服务器ip地址”, 端口号))
while True:
message1 = client.recv(1024)
print(message1.decode(encoding=“utf-8”))
message2 = input(“输入:”)
client.send(message2.encode())
client.close()