# ========== ======= socket
#Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。#Socket就是一个模块,可以通过调用模块中已实现的方法建立两个进程中的通信和连节。# 基于TCP协议的socket# tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端# import socket# sk = socket.socket()# sk.bind(("127.0.0.1",8540)) #把地址绑定到套接字# sk.listen() #监听链接# conn,addr = sk.accept() #接受客户端链接 #三次握手# ret = conn.recv(1024) #接受客户端信息# print(ret) # 打印客户端信息# conn.send(b"hi") #向客户端发送信息# conn.close() #关闭客户端套接字# sk.close() #关闭服务器套接字(可选)#client 端# import socket# sk = socket.socket() # 创建客户套接字# sk.connect(("127.0.0.1",8540)) #尝试连接服务器# sk.send(b"hello!") #发送信息# ret = sk.recv(1024) #对话 (发送/接收)# print(ret)# sk.close() #关闭客户套接字# 加一条socket配置,重用ip和端口# import socket# from socket import SOL_SOCKET,SO_REUSEADDR# sk = socket.socket()# sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加#基于UDP协议的socket#udp是无链接的,启动服务之后可以直接接受消息,不需要提前建立链接# import socket# udp_sk = socket.socket(type=socket.SOCK_DGRAM)# 创建一个服务器的套接字# udp_sk.bind(("127.0.0.1",9000)) #绑定服务器套接字# msg,addr = udp_sk.recvfrom(1024)# print(msg)# udp_sk.sendto(b"hi",addr) #对话(接受与发送)# udp_sk.close() #关闭服务器套接字# #client 端# import socket# udp_sk = socket.socket(type=socket.SOCK_DGRAM)# udp_sk.sendto(b"hello",("127.0.0.1",9000)) #发送信息# back_msg,addr = udp_sk.recvfrom(1024) #接受信息# print(back_msg.decode("utf-8"),addr)#udp_sk.close()