*套接字:套接字是一个抽象层,是传输层实现端与端的通信,每一个传输层连接有两个端点,传输层连接的端点叫做套接字。套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的Socket中,使这段信息能传送到其他程序中。
*tcp套接字编程: 以字节流方式传输数据,实现tcp网络传输方案。(面向连接–tcp协 议–可靠的–流式套接字)的编程
python代码实现:
"""
tcp_server.py tcp套接字服务端流程
"""
#导入模块
import socket
# 创建tcp套接字对象
sockfd = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
# 绑定地址
sockfd.bind(('0.0.0.0',9999))
# 设置监听
sockfd.listen(5)
# 等待处理客户端连接请求
while True:
print("Waiting for connect...")
try:
connfd,addr = sockfd.accept()
print("Connect from",addr)
except KeyboardInterrupt:
# ctrl-c 退出程序
print("Server exit")
break
except Exception as e:
print(e)
continue
#循环 消息收发
while True:
data = connfd.recv(1024) #接收消息字节数
# 如果data为空意味着客户端断开
if not data:
break
print("Receive:",data.decode())
# if data == b'Q':
# break
n = connfd.send(b"Thanks") #传输数据转化为二进制
print('Send %d bytes'%n)
connfd.close()
# 关闭套接字
sockfd.close()
客户端:
"""
tcp_client.py tcp套接字客户端流程
注意: 和服务端配合,使用同样的套接字
"""
from socket import *
# 创建tcp套接字
sockfd = socket() # 默认值
# 连接服务器
server_addr = ('127.0.0.1',9999) # 服务器地址
sockfd.connect(server_addr)
# 先发后收
while True:
msg = input("Msg:")
if not msg:
break
sockfd.send(msg.encode()) #字节串
# if msg == 'Q':
# break
data = sockfd.recv(1024)#设置接收的消息的最大字节数
print("From server:",data.decode())#t转换为字节串
sockfd.close()