Socket(套接字)是计算机网络中的一个抽象层,它允许应用程序通过网络进行通信。套接字用于跨网络的不同主机上的应用程序之间的数据交换。在互联网中,套接字通常基于 TCP(传输控制协议)或 UDP(用户数据报协议)来实现数据的可靠传输或快速传输。应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。它是一组用于网络通信的API,包括了一系列的函数和数据结构,它提供了一种标准的网络编程接口,使得应用程序可以在网络中进行数据传输。Socket本身并不是一个具体的实现,而是一个抽象的概念。不同的操作系统和编程语言可以通过不同的方式来实现Socket API。
通信协议可分为TCP、UDP。 TCP(Transmission Control Protocol传输控制协议)是一种面向连接的,可靠的,基于字节流的传输通信协议。UDP(User Data Protocol,用户数据报协议)是无连接的,即发送数据之前不需要建立连接,类似于发短信,我只管发,能不能接收到跟我关系不大。
Socket 基于UDP实现客户端与服务端通信
UDP 服务端 :
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(('127.0.0.1',8888))
print('UDP服务端已经启动了')
while True:
data,client = server.recvfrom(1024)
print('接收到客户端发来的消息:', data.decode(('utf-8')))
server.sendto('我是服务端'.encode('utf-8'),client)
UDP客户端 :
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
client.sendto('我是客户端'.encode('utf-8'),('127.0.0.1',8888))
data,server = client.recvfrom(1024)
print(data.decode('utf-8'))
client.close()
启动通信后,服务端和客户端各自收到信息
Socket 基于TCP实现客户端与服务端通信
TCP 服务端 :

import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("127.0.0.1", 8888))
server.listen(5)
print("服务端已经启动,等待客户端连接======》")
client, address = server.accept()
print("已经建立连接")
while True