> 文档中心 > 什么是Socket?

什么是Socket?


一、什么是Socket?

在计算机通信领域,socket 被翻译为“套接字”(套接字=主机+端口号),它是计算机之间进行通信的一种约定或一种方式。通过 socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read关闭close”模式来操作。
我的理解就是Socket就是该模式的一个实现,它只是提供了一个针对TCP或者UDP编程的接口:即socket是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
在这里插入图片描述

二、socket通信流程

在这里插入图片描述

三、socket 示例(python3)

server.py

# -*- coding: utf-8 -*-#==============================================================================# 1. TCP server端代码# #!/usr/bin/env python# ## # -*- coding:utf-8 -*-# ##==============================================================================from socket import *from time import ctimeHOST = ''PORT = 21568BUFSIZE=1024ADDR=(HOST, PORT)tcpSrvSock=socket(AF_INET, SOCK_STREAM)tcpSrvSock.bind(ADDR)tcpSrvSock.listen(5)while True:    print ('waiting for connection ...',ctime())    tcpCliSock,addr = tcpSrvSock.accept()    print ('... connected from:', addr)    while True: data=tcpCliSock.recv(BUFSIZE) print("receive from 2:",data) if not data:     break tcpCliSock.send(str.encode('[%s] %s'%(ctime(), data))) print ([ctime()],':',data) tcpCliSock.close()tcpSrvSock.close()

client.py

# -*- coding: utf-8 -*-#==============================================================================# 2. TCP client端代码# #!/usr/bin/env python# ## # -*- coding:utf-8 -*-# ##==============================================================================from socket import *HOST='localhost'PORT=21567BUFSIZE=1024ADDR=(HOST, PORT)tcpCliSock=socket(AF_INET, SOCK_STREAM)tcpCliSock.connect(ADDR)while True:    data = input('>')    print(type(data))    data = str.encode(data)    print(data)    if not data: break    tcpCliSock.send(data)    data=tcpCliSock.recv(BUFSIZE)    if not data: break    print (data)tcpCliSock.close()

在这里插入图片描述