壹:

TCP是面向运输层的协议。使用TCP协议之前,必须先建立TCP连接,在传输完成后,必须释放已经建立的TCP连接。
每条TCP连接只能有两个端,每一条TCP连接只能是点对点的。
TCP提供可靠的交付的服务。通过TCP连接传输的数据,无差错、不丢失、不重复,并且按序到达。
TCP提供全双工通信。TCP通信允许通信双发的任何时候都能发送数据。
TCP面向字节流。

贰:

服务器端:

import socket
import threading client_flag=0 #定义一个标志位 def client1(socket_tcp_server): #采用了多线程
global client_flag #声明该变量可以在该方法使用 # accept等待客户端连接
# 如果有新的客户来连接服务器,那么就产生一个新的套接字连接客户端服务
# new_client_socket用来为这个客户端服务
# socket_tcp_server就可以省下专门等待其他客户连接 new_client_socket, client_addr = socket_tcp_server.accept() #当服务器得到客户端请求连接时,client_flag=1
client_flag=1
print("客户端连接成功",client_addr) while True:
# 接收数据
recv_date = new_client_socket.recv(1024) # 当客户端断开连接时,recv_date的值为空 if recv_date: #使服务器能一直收到信息,只有客户端断开时,才退出循环
print("client"+str(client_addr[1]%10000%1000%100%10)+":接收到的数据为:", recv_date.decode("gbk"))
else:
break #发送数据
send_date = "收到"
new_client_socket.send(send_date.encode("gbk"))
new_client_socket.close() #关闭这个套接字 print("对方已经结束了会话,等待新的连接") def main():
global client_flag
socket_tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义一个监听套接字
socket_addr=("",7777)
socket_tcp_server.bind(socket_addr) #服务器绑定一个端口 socket_tcp_server.listen(128) # listen使套接字转变为被动连接,即类似等待客户端连接,而不是主动虚招客户端
print("等待一个新客户端连接....") client1_threading = threading.Thread(target=client1, args=(socket_tcp_server,))
client1_threading.start() while True:
if client_flag: #当client_flag为1时,即服务器得到客户端请求连接时,开始一个新的线程 client1_threading = threading.Thread(target=client1,args=(socket_tcp_server,)) #新建一个线程
client1_threading.start() #开启这个线程
client_flag = 0 #标志为,目的使线程不会一直增多,只有当服务器得到客户端请求连接时,才开始一个新的线程 if __name__ =='__main__':
main()

叁:

客户端的tcp很多,这里就不做赘述了。

基于pythondetcp多个客户端连接服务器的更多相关文章

  1. Mysql从客户端连接服务器连不上的问题

    Mysql从客户端连接服务器连不上的问题   公司要用Mysql做一个测试,开始在自己的本地建一个Mysql数据库自己本地的程序再连上去,没有遇到过连接不上的问题.这次数据库在服务器上,从本地客户端连 ...

  2. C/S模式客户端连接服务器连接不上的问题

    C/S模式客户端连接服务器连接不上的问题 1.服务器电脑防火墙关闭 2.服务器端SQL SERVER2008R: 配置工具--SQL SERVER配置管理器 MSSQLSERVER协议.客户端协议(S ...

  3. C# Winform Soket 网络编程 多个客户端连接服务器并返回客户端操作请求

    2017.8.2 服务器: #region 参数与集合 /// <summary> /// 客户端IP /// </summary> string clientIP; /// ...

  4. Oracle 客户端连接服务器[转]

    很多朋友在开发项目中并不是每个人用一个数据库,而是有单独的一台主机作为开发的数据库服务器,这样,就需要我们的开发人员去连接它.          首先是进入oracle的 Net  Mananger:

  5. Telnet客户端连接服务器,看不见字符,只显示横线

    Telnet 窗口看不见字符,只显示小横线 在用telnet连接tomcat服务器的 时候,窗口中不显示字符,显示成一个一个的横线 解决办法: 按住“Ctrl+]” 回车解决问题

  6. 一、SecureCRT 8.0 客户端连接服务器

    1.通过远程连接服务器linux,连接的是ssh服务: 如图:ssh2协议是ssh的升级版. 连接模式: 2. Ctrl+d 快速退出==exit/quit/logout 3.SecureCRT 改变 ...

  7. ESA2GJK1DH1K升级篇: 远程升级准备工作: 使用TCP客户端连接Web服务器实现http下载数据

    一,根目录建一个文件 二,使用浏览器访问 http://47.92.31.46:80/1.txt     或者  http://47.92.31.46/1.txt 三,使用TCP客户端访问文件内容 3 ...

  8. 使用 WebSocket 客户端连接 MQTT 服务器

    简介 近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端或通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 得到了广泛的应用. WebSock ...

  9. 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式

    Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...

  10. 用友U8客户端连接不上服务器全攻略

    用友U8客户端连接不上服务器全攻略 http://www.enet.com.cn2009年09月23日09:26 来自论坛 [导读]:如果网络不通,就让用户查找网络原因 检查步骤: 1.网络是否通? ...

随机推荐

  1. IT管理:开篇 - IT管理系列文章

    以前看短视频,有一段郑翔洲老师讲到公司的价值问题,所以有此文,对这个公司的价值问题的理解描述. 一.        公司赚钱: 在以前的博文里,笔者就有写过一篇(7.正确的赚钱方式 - CEO之公司管 ...

  2. mit6.824lab2D-Debug记录

    1.死锁 要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁. 具体解释: 2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁.而在提交普 ...

  3. 通过解析库探究函数式抽象代价 ( ini 解析示例补充)

    上一篇 用 HexColor 作为示例,可能过于简单 这里再补充一个 ini 解析的示例 由于实在写不动用其他库解析 ini 了, 春节都要过完了,累了,写不动了, 所以随意找了一份解析ini的库, ...

  4. Power BI 14 DAY

    快消行业销售情况分析 分析目的 帮助经销商优化进.销.存各环节业务流程行为,实现进销存一体化管理,加快资金运转速度,实现销售利润最大化的目的 重要指标 销售类指标 动销次数:在一段期间内产品的销售次数 ...

  5. NC24755 [USACO 2010 Dec S]Apple Delivery

    题目链接 题目 题目描述 Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course ...

  6. 【OpenGL ES】立方体手动旋转

    1 前言 ​ 本文主要介绍使用 OpenGL ES 绘制立方体,并实现手动触摸事件控制立方体旋转. ​ 为方便控制触摸旋转,假设旋转轴始终在 xoy 平面上,设 z 轴的方向向量 u = (0, 0, ...

  7. Swoole从入门到入土(20)——WebSocket服务器[协程版本]

    本篇让我们先用一段示例代码开路: <?php Co\run(function () { $server = new Co\Http\Server('0.0.0.0', 9501, false); ...

  8. SpringBoot相关注解使用

    @MapperScan注解和@Mapper @Mapper常用在相应的 *Mapper类上,但是每个类都使用相对麻烦,所以后来用@MapperScan替代 ,@MapperScan注解使用在启动类上. ...

  9. MySQL Unknown error 1267

    1.问题说明 最近在mysql中运行一段SQL直接报错: 有一点要说一下,这个navicat给出的报错太简短只有错误码,还得自己去查有点垃圾,不知道新版如何? 2.问题原因 这里可以看到问题出在t2. ...

  10. 面向对象之封装,类的相关操作,私有成员删除,构造方法__init__---day20

    1.面向对象之封装 # ### 面向对象oop -封装 """ 类中封装: 成员属性 成员方法 封装等级: 1.公有:公有成员既能够在类外调用,也可在类内调用 2.私有: ...