Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】


Posted in Python onOctober 12, 2019

本文实例讲述了Python 网络编程之TCP客户端/服务端功能。分享给大家供大家参考,具体如下:

demo.py(TCP客户端):

import socket
def main():
  # 1. 创建tcp的套接字
  tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 2. 链接服务器
  # tcp_socket.connect(("192.168.33.11", 7890))
  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"))
  # 接收数据。 会阻塞代码,直到接收到数据
  recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8"))
  # 4. 关闭套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

demo.py(TCP服务端):

import socket
def main():
  # 1. 创建套接字 socket
  tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定7890端口 (如果服务端先close,再启动服务端就不会报端口被占用的错误。)
  tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  # 2. 绑定本机ip和端口号 bind
  tcp_server_socket.bind(("", 7890))
  # 3. 监听客户端的链接请求 listen (由主动去链接服务器,变成被客户端链接)
  tcp_server_socket.listen(128) # 128影响链接客户端的数量(并发量)(和操作系统也有关)
  # 4. 接受客户端的链接 accept。 会阻塞代码,直到有客户端链接
  new_client_socket, client_addr = tcp_server_socket.accept()
  print(client_addr) # ("192.168.33.109",53766) 客户端的ip和端口
  # 接收客户端发送过来的数据。 会阻塞代码,直到接收到数据
  recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8")) # 如果recv_data为空,表示客户端断开链接
  # 写数据给客户端
  new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
  # 关闭套接字
  new_client_socket.close() # 与客户端通信的套接字
  tcp_server_socket.close() # 服务器套接字
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
Python切片工具pillow用法示例
Mar 30 Python
python实现多张图片拼接成大图
Jan 15 Python
Python分支语句与循环语句应用实例分析
May 07 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
Python jieba结巴分词原理及用法解析
Nov 05 Python
Python Collatz序列实现过程解析
Oct 12 #Python
python logging日志模块原理及操作解析
Oct 12 #Python
Python爬虫之urllib基础用法教程
Oct 12 #Python
python 生成器和迭代器的原理解析
Oct 12 #Python
python 表格打印代码实例解析
Oct 12 #Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 #Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 #Python
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
php合并js请求的例子
2013/11/01 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
JS常用知识点整理
2017/01/21 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
简单的vuex 的使用案例笔记
2018/04/13 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python之指数与E记法的区别详解
2019/11/21 Python
python创建n行m列数组示例
2019/12/02 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
教师研修随笔感言
2014/01/23 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
工程款申请报告
2015/05/15 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书