python 实现tcp套接字编程

套接字

*套接字:套接字是一个抽象层,是传输层实现端与端的通信,每一个传输层连接有两个端点,传输层连接的端点叫做套接字。套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的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()












你可能感兴趣的:(python,python,套接字)