socket又称套接字,应用程序可以通过它发出或接收网络请求,实现通讯功能。
创建socket
socket.socket([family[, type[, protocal]]])
1、family 可以是 AF_UNIX 或 AF_INET(默认是这个)。
2、type 可以是 SOCK_STREAM(默认是这个) 或 SOCK_DGRAM。
3、protocol 一般不填,默认值为 0。
4、所以创建socket也可以用socket.socket(),不加任何参数。
下面代码的部分屏幕是可以左右滑动的。
我们需要创建两个.py文件
server.py
import socket
# 创建socket对象,相当于买手机
# python学习群683380553
serversocket = socket.socket()
# 获取本地主机名
host = socket.gethostname()
# 设定端口号,理论上1024-65535都可以
port = 1234
# 绑定地址和端口,相当于给手机插上电话卡
serversocket.bind((host, port))
# 设置最大连接数,超过后排队,待机状态
serversocket.listen(5)
# 设置循环,可以不停地接电话
while True:
# 建立客户端连接,接电话
clientsocket, addr = serversocket.accept()
print("连接地址: %s" % str(addr))
# 发消息
msg = '连接到服务器了。'
clientsocket.send(msg.encode('utf-8'))
# 接收信息,数据不能大于1024个字节
str_1 = clientsocket.recv(1024).decode()
print(str_1)
# 挂断电话
clientsocket.close()
client.py
# 导入 socket模块
import socket
# 创建 socket 对象
s = socket.socket()
# 获取本地主机名
host = socket.gethostname()
# 设置端口号,理论上1024-65535都可以
port = 1234
# 连接服务,指定主机和端口
s.connect((host, port))
# 接收小于 1024 字节的数据
msg = s.recv(1024)print(msg.decode('utf-8'))
# 发送信息
s.send('连接到一个客户端。'.encode('utf-8'))
# 关闭连接
s.close()
以上。不明白的地方,大家要多看注释。
**一个比较好理解socket的方法:**将socket说成ip+port,ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序,ip与port的绑定就标识了互联网中独一无二的一个应用程序。