Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python网络编程——TCP服务端程序开发

Python网络编程——TCP服务端程序开发

原创
作者头像
落雨
发布于 2022-02-25 12:26:15
发布于 2022-02-25 12:26:15
29.2K00
代码可运行
举报
文章被收录于专栏:落雨的专栏落雨的专栏
运行总次数:0
代码可运行

概述

TCP服务端,需要与客户端建立连接,接收并处理客户端传输来的数据。

实现步骤

1.导入socket包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import socket

2.创建服务端套接字

socket.socket(AddressFamily, Type)

socket.AF_INET表示IPv4类型

SOCK_STREAM表示tcp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#端口复用 服务端退出端口立即释放
tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)        

3.绑定端口号

tcp_server_socket.bind

第一个参数表示ip地址,一般不用指定 表示本机的任何一个ip

第二个参数表示端口号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp_server_socket.bind(('',9090))

4.设置监听

表示最大等待建立链接的个数128

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp_server_socket.listen(128)

5.等待客户端的连接请求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new_client , ip_port = tcp_server_socket.accept()
print("客户端的ip和端口号是:" , ip_port)

6..接收数据

收发消息使用新返回的套接字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #每次接收1024字节
 rece_data = new_client.recv(1024)
 #对接收到的二进制解码
 rece_data = rece_data.decode('utf-8')
 print("接收到的数据是",rece_data)

7.发送数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
send_content = "问题正在处理中"
#对content进行编码
send_data = send_content.encode('utf-8')
#发送数据
new_client.send(send_data)
new_client.close()

8.关闭套接字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp_server_socket.close()

代码实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#  tcp服务端程序开发

import socket


if __name__ == '__main__':
    # 1.创建服务端套接字
        # socket.AF_INET表示IPv4类型
        # SOCK_STREAM表示tcp
    tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
        #端口复用 服务端退出端口立即释放
        #socket.SOL_SOCKET 表示当前套接字
        #socket.SO_REUSEADDR 复用选项
        #True 确定复用
    # 2.绑定端口号
        # 第一个参数表示ip地址,一般不用指定 表示本机的任何一个ip
        #第二个参数表示端口号
    tcp_server_socket.bind(('',9090))
    # 3.设置监听
        # 128:表示最大等待建立链接的个数
    tcp_server_socket.listen(128)
    # 4.等待客户端的连接请求
        #每次客户端和服务器建立连接成功都会返回一个新的套接字
    new_client , ip_port = tcp_server_socket.accept()
    print("客户端的ip和端口号是:" , ip_port)
    # 5.接收数据
        #收发消息使用新返回的套接字
    rece_data = new_client.recv(1024)
    rece_data = rece_data.decode('utf-8')
    print("接收到的数据是",rece_data)
    # 6.发送数据
    send_content = "问题正在处理中"
    send_data = send_content.encode('utf-8')
    new_client.send(send_data)
    new_client.close()
    # 7.关闭套接字
    tcp_server_socket.close()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Js实用函数合集
var b = new Date(); //获取当前时间 b.getTime() //获取时间戳 b.getFullYear() //获取年份 b.getMonth()+1; //获取月份 b.getDate() //获取天 b.getHours() //获取小时 b.getMinutes() //获取分钟 b.getSeconds() //获取秒数 b.getDay() //获取星期几 b.getMilliseconds() //获取毫秒
全栈程序员站长
2022/09/18
1.5K0
Js实用函数合集
10个实用的工具函数
new Array 创建的数组只是添加了length属性,并没有实际的内容。通过扩展后,变为可用数组用于循环
WahFung
2020/08/24
5000
【总结】56个JavaScript 实用工具函数助你提升开发效率!
https://juejin.cn/post/7019090370814279693
pingan8787
2021/11/08
9610
【总结】56个JavaScript 实用工具函数助你提升开发效率!
jQuery来源学习笔记:扩展的实用功能
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117736.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
6040
分享 21 个简单实用的 JS 代码技巧
有时候我们需要将元素滚动到可见区域,怎么办?使用 scrollIntoView 就足够了。
前端达人
2023/08/31
2990
分享 21 个简单实用的 JS 代码技巧
从Vue.js源码中我学到的几个实用函数
如果想看Vuejs源码,不知道如何下手,一般推荐配置Sourcemap,针对单个问题调试来看,如何调试Vuejs源码,我的vuex源码文章中写了。
若川
2021/04/23
2.6K0
从Vue.js源码中我学到的几个实用函数
create common utils.js
/* * author:w候人兮猗(ahwgs) * url:https://www.ahwgs.cn * github:https://github.com/ahwgs/common-utils/blob/master/utils * */ /** * 是否是数组 * @param value * @returns {boolean} */ export const isArray = (value) => { return toString.call(value) === '[obje
w候人兮猗
2020/07/01
1.1K0
常用的前端JavaScript方法封装
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157261.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
8870
BiugleJS
老猫-Leo
2023/12/11
1760
手撕常见JS面试题
高阶函数实现AOP(面向切面编程) Function.prototype.before = function (beforefn) { let _self = this; // 缓存原函数的引用 returnfunction () { // 代理函数 beforefn.apply(this, arguments); // 执行前置函数 return _self.apply(this, arguments); // 执行原函数
helloworld1024
2022/10/14
5500
js知识点总结--这些你都了解了吗?
js是一种基于对象和事件驱动的并具有相对安全性的客户端脚本语言。也是一种广泛用于web客户端开发的脚本语言,常用来给html网页添加动态功能,如响应用户的各种操作。想了解更多加群1075083208主要的目的是为了解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。
7537367
2020/08/03
5930
收藏好了,JS开发须知道的41个小技巧
链接:https://juejin.im/post/6854573212890562573
coder_koala
2020/11/10
5690
收藏好了,JS开发须知道的41个小技巧
前端60余种工具方法,值得收藏
“ 关注 前端开发社区 ,回复 '领取资源',免费领取Vue,小程序,Node Js,前端开发用的插件以及面试视频等学习资料,让我们一起学习,一起进步
前端老道
2020/05/27
9520
前端60余种工具方法,值得收藏
前端简洁并实用的工具类
本文主要从日期,数组,对象,axios,promise和字符判断这几个方面讲工作中常用的一些函数进行了封装,确实可以在项目中直接引用,提高开发效率.
火狼1
2019/04/17
6280
前端简洁并实用的工具类
【JS】1890- 20 个 JS 工具函数助力高效开发
日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。
pingan8787
2023/12/13
2300
【JS】1890- 20 个 JS 工具函数助力高效开发
32个手撕JS,彻底摆脱初级前端(面试高频)
作者:洛霞 https://juejin.im/post/6875152247714480136
前端达人
2020/11/11
1.9K0
32个手撕JS,彻底摆脱初级前端(面试高频)
关于JavaScript常用的工具函数汇总
前言 随着开发经验的积累,很多人会有自己的常用站点,一些网址收藏,自己造的轮子或者别人的轮子,工具函数库等等。 这里提供一些常用的工具函数,如果你也有一些觉得挺不错的库,欢迎在下方评论💓。 格式化时间戳 export function formatDateTimeStamp(date, fmt) { // 格式化时间戳 : formatDateTimeStamp(new Date(time),'yyyy-MM-dd hh:mm:ss') if (/(y+)/.test(fmt)) {
唐志远
2022/10/27
5580
js工具函数大全 || 实用篇
“ 关注 前端开发社区 ,回复 '领取资源',免费领取Vue,小程序,Node Js,前端开发用的插件以及面试视频等学习资料,让我们一起学习,一起进步
前端老道
2020/05/29
4.8K0
js工具函数大全 || 实用篇
JS开发必须知道的41个技巧【持续更新】
JS是前端的核心,但有些使用技巧你还不一定知道; 本文梳理了JS的41个技巧,帮助大家提高JS的使用技巧; 文章有点长,可以clone下源码,直接撸,源码地址请戳全部源码,原创不易,欢迎star; 序列文章: Vue 开发必须知道的 36 个技巧 React 开发必须知道的 34 个技巧
火狼1
2020/07/21
8440
49个常用JavaScript方法封装
https://segmentfault.com/a/1190000039220666
@超人
2021/07/29
5900
相关推荐
Js实用函数合集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验