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小技巧之批量抓取美女图片
Jun 06 Python
python函数装饰器用法实例详解
Jun 04 Python
python实现文本文件合并
Dec 29 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
python反编译教程之2048小游戏实例
Mar 03 Python
Python基础之元编程知识总结
May 23 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
讲解Python中的标识运算符
2015/05/14 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
财务简历的自我评价
2014/03/05 职场文书
2014年国培研修感言
2014/03/09 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
吃通javascript正则表达式
2021/04/21 Javascript