服务器:
# coding=utf-8
import socket
# socket.AF_INET是默认的地址簇
# UDP是socket.SOCK_DGRAM
# TCP是socket.SOCK_STREAM
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本机IP地址
host = socket.gethostname()
# 任意指定端口号(大于1024)
port = 5200
s.bind((host, port))
# 最多同时连接5个客户端
s.listen(5)
while True:
print('等待客户端连接中...')
# 阻塞, 直到客户端连接请求, c是客户端套接字, addr是客户端地址
c, addr = s.accept()
print(f'来自客户端{addr}的连接..')
# 向客户端发送数据, 必须发送和传递ascii字符或者二进制流, 非ascii字符需要手动转义成字节流
c.send(bytes('感谢您的连接..', 'utf-8'))
# 关闭当前客户端请求
c.close()
客户端:
# coding=utf-8
import socket
if __name__ == '__main__':
# 创建客户端套接字对象, TCP协议
s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到本地端口5200的服务器
s1.connect((socket.gethostname(), 5200))
# 注意服务器和客户端必须要完整"握手", 一次发送必须对应一次接收. 最大一次接受1024字节.
print(s1.recv(1024).decode('utf-8'))
# 由于前面服务器在发送完数据后主动关闭了客户端套接字, 所以这里我们不需要再手动关闭.
# s1.close()
网友评论