套接字:
是可以实现不同主机进程通信的一种方式
套接字使用流程
1、创建一个套接字
2、使用套接字收发数据
3、关闭套接字
python代码演练:
创建udp发送数据套接字
import socket
def main():
"""
创建一个套接字
:return:
"""
# 创建一个套接字
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定端口
udp_socket.bind(("192.168.0.100",6677))
# 使用套接字收发数据
udp_socket.sendto(b"hahaha",("192.168.0.100",7788))
# 关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()
创建udp接收数据套接字
# coding=UTF-8
import socket
def main():
"""
# 创建一个套接字接收数据
:return:
"""
# 创建一个套接字
receive_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定端口 发数据套接字可以不绑定端口,接收数据套接字要绑定端口
localaddr = ("",7788)
receive_socket.bind(localaddr)
# 接收数据
recv_data = receive_socket.recvfrom(1024)
print(recv_data)
recv_msg = recv_data[0]
print(recv_msg.decode("UTF-8"))
# 关闭套接字
receive_socket.close()
if __name__ == '__main__':
main()
tcp服务器demo
import socket
def main():
# 创建一个套接字
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定IP
tcp_server_socket.bind(("127.0.0.1",8080))
# 让默认的套接字由主动变成被动
tcp_server_socket.listen(128)
# 等待客户端的连接 返回值是一个元组
# client_socket是为连接的客户端新创的一个套接字
# client_addr是客户端连接的地址,格式为元组,包括IP与port
client_socket,client_addr = tcp_server_socket.accept()
# 接收客户端发送来的数据
client_msg = client_socket.recv(1024)
# 发送数据
client_socket.send("msg".encode("utf-8"),)
# 关闭客户端
tcp_server_socket.close()
if __name__ == '__main__':
main()
tcp客户端demo
import socket
def main():
# 创建一个套接字
tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 链接一个服务器
tcp_socket.connect(("127.0.0.1",8080))
# 接收数据,
tcp_socket.recv(1024)
# 发送数据
tcp_socket.send("msg")
# 关闭套接字
tcp_socket.close()
if __name__ == '__main__':
main()