基于python实现简单C/S模式代码实例


Posted in Python onSeptember 14, 2020

C/S模式就是指客bai户端/服务器模式,du是计算机软件协同工作的一种模式。zhi

由于Web浏览器的兴起,B/S模式逐步取代了daoC/S模式,被更广泛地应用。随着计算机网络技术的成熟和应用普及,特别是局域网的发展、PC机的出现,越来越多的用户和企业开始使用计算机管理一些事务。

PC机的资源没有大型、中型甚至小型主机丰富,但将多台PC机联成网,必然会增加资源含量,各个用户都在网络上来共享所有资源。根据客户/服务器(Client/Server简记为C/S)体系结构的概念,至少用两台计算机来分别充当客户机和服务器角色。

服务器端代码:

#!/usr/bin/python

import time, socket, threading

# thread handle function
def tcplink(sock, addr):
  print 'Accept new connection from %s:%s...' % addr
  sock.send('Welcome!')
  while True:
    data = sock.recv(1024)
    time.sleep(1)
    if data == 'exit' or not data:
      break
    sock.send('Hello, %s!' % data)
  sock.close()
  print 'Connection from %s:%s closed.' % addr

# create socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# listen port
s.bind(('127.0.0.1', 9999))
# start listen
s.listen(5)
# print prompt
print 'Waiting for connection...'

while True:
  # accept a new connection
  sock, addr = s.accept()
  # create new thread to handle tcp connection
  t = threading.Thread(target=tcplink, args=(sock, addr))
  t.start()

客户端代码:

#!/usr/bin/python

# import module
import socket

# create TCP object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# connect sina
s.connect(('127.0.0.1', 9999))
# receive welcome
print s.recv(1024)

for data in ['zjw', 'ygl', 'lele']:
  # send data
  s.send(data)
  print s.recv(1024)
while True:
  data = 1

设计思路还是那样的,服务器端监听固定端口,等待连接,客户端来连接,然后互相发送消息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python打开文件并获取文件相关属性的方法
Apr 23 Python
Python中动态创建类实例的方法
Mar 24 Python
获取python文件扩展名和文件名方法
Feb 02 Python
Python延时操作实现方法示例
Aug 14 Python
使用numba对Python运算加速的方法
Oct 15 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
Python如何读写CSV文件
Aug 13 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 #Python
基于python实现简单网页服务器代码实例
Sep 14 #Python
用python绘制樱花树
Oct 09 #Python
Python logging日志库空间不足问题解决
Sep 14 #Python
Python grpc超时机制代码示例
Sep 14 #Python
python/golang 删除链表中的元素
Sep 14 #Python
Python基于pillow库实现生成图片水印
Sep 14 #Python
You might like
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
JS中Iframe之间传值的方法
2013/03/11 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
linux 后台运行node服务指令方法
2018/05/23 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python中方法链的使用方法
2016/02/23 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
django初始化数据库的实例
2018/05/27 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
Python实现微信机器人的方法
2019/09/06 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
应届生程序员求职信
2013/11/05 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
小学生常见病防治方案
2014/06/06 职场文书
工作感言一句话
2015/08/01 职场文书
Java 多线程协作作业之信号同步
2022/05/11 Java/Android