Tcp数据传输server/client
时间:2019-10-21
本文章向大家介绍Tcp数据传输server/client,主要包括Tcp数据传输server/client使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
server主要的步骤:
1、创建套接字-->2、绑定服务器的信息—>3、默认的套接字由主动变为被动 listen-->4、等待客户端的链接
# 如果recv解堵塞,那么有2种方式:
# 1. 客户端发送过来数据
# 2. 客户端调用close导致而了 这里 recv解堵塞
def main(): # 1. 买个手机(创建套接字 socket) tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 插入手机卡(绑定本地信息 bind) tcp_server_socket.bind(("", 7890)) # 3. 将手机设置为正常的 响铃模式(让默认的套接字由主动变为被动 listen) tcp_server_socket.listen(128) # 循环目的:调用多次accept,从而为多个客户端服务 while True: print("等待一个新的客户端的到来...") # 4. 等待别人的电话到来(等待客户端的链接 accept) new_client_socket, client_addr = tcp_server_socket.accept() print("一个新的客户端已经到来%s" % str(client_addr)) # 循环目的: 为同一个客户端 服务多次 while True: # 接收客户端发送过来的请求 recv_data = new_client_socket.recv(1024) print("客户端福送过来的请求是:%s" % recv_data.decode("utf-8")) # 如果recv解堵塞,那么有2种方式: # 1. 客户端发送过来数据 # 2. 客户端调用close导致而了 这里 recv解堵塞 if recv_data: # 回送一部分数据给客户端 new_client_socket.send("hahahghai-----ok-----".encode("utf-8")) else: break # 关闭套接字 # 关闭accept返回的套接字 意味着 不会在为这个客户端服务 new_client_socket.close() print("已经为这个客户端服务完毕。。。。") # 如果将监听套接字 关闭了,那么会导致 不能再次等待新客户端的到来,即xxxx.accept就会失败 tcp_server_socket.close()
client端
# 1. 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 server_ip = input("请输入要链接的服务器的ip:") server_port = int(input("请输入要链接的服务器的port:")) server_addr = (server_ip, server_port) tcp_socket.connect(server_addr) # 3. 发送数据/接收数据 send_data = input("请输入要发送的数据:") tcp_socket.send(send_data.encode("utf-8")) # 4. 关闭套接字 tcp_socket.close()
原文地址:https://www.cnblogs.com/XXQQ123/p/11714060.html
- 学js少看书肯定是不成的,要多看。
- 抽象是啥?就是一群人的特征;js中的call是啥?就是我想用你家的电饭锅
- 从node事件到观察者 -- 学习要有一根线索
- Joy:一款用于捕获和分析网络内部流量数据的工具
- 老尚,能讲讲闭包么?“可以,没问题,马上”
- PHP代码安全杂谈
- angularJs,请问vue是你失散多年的亲人吗?
- 无监督学习神经网络——自编码
- 不学不知道,sort()方法中的坑
- js数组去重的思路与缓动公式
- vue.js 的组件感觉比react的直观&&面试相关的七个实例
- 前端组件“可编辑表格”,怎么设计才好呢?先得有思路
- Linux基础(day61)
- 一款名为Rapid的勒索软件正在迅速传播
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Salesforce LWC学习(二十六) 简单知识总结篇三
- 【Java】13 异常
- 【Java】14 多线程
- 【Java】16 字节流
- 【Java】17 字符流
- 极坐标系在数据可视化中的巧妙运用
- 【Java】18 增强流
- 【Java】19 网络编程
- 【Java】20 基于 TCP 协议的网络编程
- 【Java】01 初识 Java
- 多张热图的排版技巧
- 【Java】02 数据类型与运算符
- StringBuilder/StringBuffer源码阅读笔记
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分)
- 【Java】21 基于 UDP 的网络编程