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实现统计英文单词个数及字符串分割代码
May 28 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python实现计算最小编辑距离
Mar 17 Python
Python基于dom操作xml数据的方法示例
May 12 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
Python面向对象之类和对象实例详解
Dec 10 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 Python
PyTorch中的torch.cat简单介绍
Mar 17 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
第十三节 对象串行化 [13]
2006/10/09 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
CodeIgniter中实现泛域名解析
2014/07/19 PHP
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
解决uWSGI的编码问题详解
2017/03/24 Python
python 换位密码算法的实例详解
2017/07/19 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Python实现多进程的四种方式
2019/02/22 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
教师节促销方案
2014/03/22 职场文书
网络编辑求职信
2014/04/30 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
法定代表人资格证明书
2015/06/18 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android
Python创建SQL数据库流程逐步讲解
2022/09/23 Python