zoukankan      html  css  js  c++  java
  • python3 最简单的网络编程tcp(socket数据流)

    TCP 基于连接的、 是连续的、 可靠的、 效率⽐较低、 更像是打电话, 聊天的过程中不能中断。
    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议

    服务器端

    # tcp_server.py
    import socket
    
    
    sk = socket.socket()  # 创建socket对象
    sk.bind(("127.0.0.1", 9998))  # 绑定IP和端口
    sk.listen()  # 开启监听
    conn, address = sk.accept()  # 等待客户端连接 阻塞
    while 1:  # 让服务端和客户端循环通信
        send_msg = input(">>>:").strip()  # 要发送的消息
        conn.send(send_msg.encode("utf-8"))  # 发送消息给客户端
        if send_msg.upper() == "BYE":  # 如果发送的消息是BYE就退出循环
            break
        recv_msg = conn.recv(1024)  # 接收来自客户端的消息
        print("来自客户端的消息:", recv_msg.decode("utf-8"))
        if recv_msg.decode("utf-8").upper() == "BYE":  # 如果来自客户端的消息是BYE就退出循环
            break
    conn.close()  # 关闭conn连接
    sk.close()  # 关闭sk连接

    socket套接字 port|IP|mac|数据,所以叫套接字

    tcp服务端

      1、导入socket模块

      2、创建socket对象

      3、绑定IP和端口

      4、开启监听

      5、等待客户端连接,阻塞

      6、发送消息给客户端,阻塞

      7、接收来自客户端的消息  

      8、关闭conn连接

      9、关闭socket连接 

    客户端

    # tcp_client.py
    import socket
    
    
    sk = socket.socket()  # 创建socket对象
    sk.connect(("127.0.0.1", 9998))  # 连接服务端
    while 1:  # 服务端和客户端循环通讯
        recv_msg = sk.recv(1024)  # 接收来自服务端的消息
        print("来自服务端的消息:", recv_msg.decode("utf-8"))
        if recv_msg.decode("utf-8").upper() == "BYE":  # 如果来自服务端的消息是BYE就直接退出循环
            break
        send_msg = input(">>>:").strip()  # 要发送给服务端的消息
        sk.send(send_msg.encode("utf-8"))  # 发送消息给服务端
        if send_msg.upper() == "BYE":  # 如果发送的消息是BYE就直接退出循环
            break
    sk.close()  # 关闭sk连接

    tcp客户端:

      1、导入socket模块

      2、创建socket对象

      3、建立socket连接

      4、接收来自于服务端的消息 

      5、发送消息给客户端

      6、关闭socket连接

    注意:

      1、先启动服务器端程序,再启动客户端程序。

      2、服务器端先发送消息,客户端收到消息后,再发送消息给服务器端。(程序怎么写,谁先发送消息)

  • 相关阅读:
    JAVA 继承
    JAVA 封装
    windows下vi/vim编辑器的基本操作
    Emacs 快速指南
    如何批量下载bing的背景图片?
    C#制作ActiveX插件
    MQTT协议
    三年前做的代码生成器,可以做为新手学习之用,当时忘了放上源码,实在抱歉!
    nginx lua 打印 特定 header
    利用Php ssh2扩展实现svn自动提交到测试服务器
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/12002082.html
Copyright © 2011-2022 走看看