壹:
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很多,这里就不做赘述了。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2018-02-02 源码调试debug_info 的作用和使用方法