Python语言实现C-S架构–基于TCP通信[通俗易懂]

Python语言实现C-S架构–基于TCP通信[通俗易懂]加粗样式@[TOC](http://blog.chinaunix.net/uid-26833883-id-3500874.html欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

以下纯属个人练习,有错误之处,望雅正

以下纯属个人练习,有错误之处,望雅正
#*coding:utf-8*
import socket
""" TCP 的客户端编程 1.socket 2.connet (TCP) 3.send 4.close """

def CC_client():
    # 创建
    tcp_cli = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)

    # 链接
    SER_IP = "192.168.43.90"
    SER_PORT = 8888
    ser_info = (SER_IP,SER_PORT)
    tcp_cli.connect(ser_info)

    #send
    while True:
        send_info = str(input("客户端发送:"))
        # if send_info == "exit":
        # break
        tcp_cli.send(send_info.encode("utf-8"))

        #recv

        tcp_cli_recv_info = tcp_cli.recv(1024)
        # print("客户端接收:%s" % tcp_cli_recv_info.decode("utf-8"))
        print(tcp_cli_recv_info)
    #clsoe
    tcp_cli.close()

if __name__ == "__main__":
    CC_client()

#--coding:utf-8--
import socket
""" TCP 的服务端 1,socket 创建socket 2.bind 绑定IP和端口 3.listen 处于监听状态 4.accept 接进来客户端的连接 5.recv/send 接受或者发送信息 6.close 关闭 """
def CC_server():
    # 创建
    tcp_ser = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)

    #bind
    SER_IP = "192.168.43.90"
    SER_PORT = 8888
    ser_info = (SER_IP, SER_PORT)
    tcp_ser.bind(ser_info)

    #listen
    LISTEN_NUM = 10
    tcp_ser.listen(LISTEN_NUM)

    while True: #循环为多个客户端服务,一直处于监听状态
        #accept 1默认会阻塞,2并返回一个新的套接字用于和接进来的客户端进行数据传输,3并记录客户端的信息,为用户进行服务
        print("服务器的IP:%s,端口:%d,正在等待新的客户端的到来" % (SER_IP,SER_PORT ))
        tcp_ser_for_client,client_addr = tcp_ser.accept()
        print("客户端已经到来,信息如下:%s" % str(client_addr))

        while True: #循环为同一个用户服务多次
            #recv 返回值为空时,则客户端调用了close
            tcp_ser_recv_info = tcp_ser_for_client.recv(1024)
            if ((tcp_ser_recv_info == "exit") or (tcp_ser_recv_info == None)):
                break
            print("服务端接收:%s" % tcp_ser_recv_info.decode("utf-8"))

            #send
            tcp_ser_send_info = str(input("服务端发送:"))
            tcp_ser_for_client.send(tcp_ser_send_info.encode("utf-8"))

    #close
        #close 关闭客户端的连接
        tcp_ser_for_client.close()
        print("为客户端%s的服务已经结束" % str(client_addr))
    tcp_ser.close()

if __name__ == "__main__":
    CC_server()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Navicat 15 for MySQL注册激活码破解方法

    Navicat 15 for MySQL注册激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    103
  • 数据库课程设计银行管理系统(SQL Server)「建议收藏」

    数据库课程设计银行管理系统(SQL Server)「建议收藏」1需求分析     生活在21世纪,我们每个人的日常生活免不了跟银行打交道。安全、规范、操作简单、功能齐全的银行管理系统能使业务得以顺利流畅的办理,使人们获得极好的用户体验。基于这样的背景,我的选题是银行管理系统。   日常生活中的银行管理系统很复杂,对安全性和完整性要求都很高。在此我运用数据库课上所学知识,结合自己平时的银行业务体验,认为一个合格的银行管理系统至少应该具备以下

    2022年5月19日
    43
  • 10240

    10240一个特殊的日子

    2022年6月9日
    38
  • Q学习(Q-learning)简单理解「建议收藏」

    Q学习(Q-learning)简单理解「建议收藏」第1节Q-learning逐步教程本教程将通过一个简单但又综合全面的例子来介绍Q-learning算法。该例子描述了一个利用无监督训练来学习未知环境的agent。假设一幢建筑里面有5个房间,房间之间通过门相连。我们将这五个房间按照从0至4进行编号,且建筑的外围可认为是一个大的房间,编号为5。房间结构如下图:上图的房间也可以通过一个图来表示,房间作为图的节点,两个房间若有门相连,则相应节点间对应一条边如图2所示图2房间结构对应的图第2节Q-learning手工推演…

    2022年10月3日
    2
  • linux脚本跳出循环语句,跳出循环的命令

    linux脚本跳出循环语句,跳出循环的命令1 exit 退出循环 同时也会退出脚本 root shell scripts shell day31 catexit sh bin bashforiin 1 3 doecho 123 exitecho 456 doneecho 脚本执行结束 root shell scripts shell day31 shexit sh1232 break

    2025年10月26日
    5
  • 多服务器共享session的方法

    多服务器共享session的方法伴随网站业务规模和访问量的逐步发展,原本由单台服务器、单个域名的迷你网站架构已经无法满足发展需要。此时我们可能会购买更多服务器,并且启用多个二级子域名以频道化的方式,根据业务功能将网站分布部署在独立的服务器上;或通过负载均衡技术(如:DNS轮询、Radware、F5、LVS等)让多个频道共享一组服务器。OK,头脑中我们已经构思了这样的解决方案,不过进入深入开发后新的技术问题又随之…

    2022年6月13日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号