一、服务端
from socket import *
# 我们要使用socket套接字,它里面有两个参数,一个是指的是使用IPv4地址,
# 另一个是套接字的类型,也就是TCP协议,创建套接字对象
server_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
# 在使用bind函数,指定IP地址和端口
server_socket.bind(('localhost', 8888)) # 本机监听8899端口
# 使用listen函数,他是指定最大连接的次数
server_socket.listen(5) # 最大连接数
print('等待接受连接')
# 在使用accept函数,一旦调用accept()方法,服务端阻塞在这里,等着客户端连接了。
# 这时当我们启动客户端时,客户端实例化socket,通过IP找到应用程序。
# 这时accept()马上就会有反应。accept()方法执行完就返回一个socket。
# 通过这个socket就可以与刚建立连接的这个客户端进行通讯了。
# 客户端创建一个socket,服务端通过accept()接收一个socket。
client_socket, client_info = server_socket.accept()
# recv用于从套接字接收数据。
# 它会阻塞程序的执行,直到接收到指定数量的字节数据或者接收操作发生错误。
# 一般情况下,它会返回接收到的数据。
recv_data = client_socket.recv(1024) # 最大接受1024个字符
print(f'收到消息:{recv_data.decode("gbk")},来自:{client_info}')
# close是一个用于关闭套接字连接的方法
client_socket.close()
server_socket.close()
二、客户端
from socket import *
# 我们要使用socket套接字,它里面有两个参数,一个是指的是使用IPv4地址,
# 另一个是套接字的类型,也就是TCP协议,创建套接字对象
client_socket = socket(AF_INET, SOCK_STREAM) # 建立TCP套接字
# 在使用bind函数,指定IP地址和端口
client_socket.connect(('127.0.0.1', 8899))
# send发送数据到已连接的套接字。可以发送字节或字节串数据。
client_socket.send('hello'.encode('gbk'))
# close发送数据到已连接的套接字。可以发送字节或字节串数据。
client_socket.close()