python前后台tcp/udp通讯示例
以下代码兼容python2.7+、python3
TCP示例
服务器 -- sever_tcp.py
#!/usr/bin/env python #coding=utf-8import time import socket import threadinglocal_addr = ('127.0.0.1',8888) buff_len = 1024def conn_proc(sock, addr):print('accept new connection from %s:%s...' % addr)# 发送数据给客户端sock.send('welcome'.encode('utf-8'))while True:print('wating for message...')# 阻塞接收客户端数据date = sock.recv(buff_len)if not date or date.decode('utf-8')=='exit':break print(date.decode('utf-8')) time.sleep(1.5)sock.send(('server '+str(time.time())).encode('utf-8'))sock.close()print('close connection %s:%s' % addr)if __name__ == '__main__':# 创建一个sockettcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定监听的地址和端口 tcp.bind(local_addr)# 开始监听端口,等待连接的最大数量为10tcp.listen(10)while True:# 阻塞等待客户端过来的tcp连接sock,addr = tcp.accept()# 创建一个新线程来处理TCP连接threading.Thread(target=conn_proc,args=(sock,addr)).start()# 关闭socket tcp.close()
打印log如下:
accept new connection from 127.0.0.1:51241...
wating for message...
hello server.1563353570.55
wating for message...
1563353572.05
客户端 -- client_tcp.py
#!/usr/bin/env python #coding=utf-8import time import socketserver_addr = ('127.0.0.1',8888) buff_len = 1024if __name__ == '__main__':# 创建一个sockettcp = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 建立连接 tcp.connect(server_addr)# 发送数据给服务器tcp.send('hello server.'.encode('utf-8'))# 阻塞接收服务器数据print(tcp.recv(buff_len).decode('utf-8'))while True:tcp.send(str(time.time()).encode('utf-8'))date = tcp.recv(buff_len)if not date or date.decode('utf-8')=='exit':break print(date.decode('utf-8'))# 关闭sockettcp.close()
打印log如下:
welcome
server 1563353572.051841
UDP示例
服务端 -- server_udp.py
#!/usr/bin/env python #coding=utf-8import time import socketlocal_addr = ('127.0.0.1',8888) buff_len = 1024if __name__ == '__main__':# 创建一个socketudp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定监听的地址和端口 udp.bind(local_addr)while True:print('wating for message...')# 阻塞接收客户端数据data, addr = udp.recvfrom(buff_len)print('received from %s data:%s' % (addr, data.decode('utf-8')))time.sleep(1.5)# 发送数据给客户端udp.sendto(('server '+str(time.time())).encode('utf-8'), addr)# 关闭socket udp.close()
打印log如下:
wating for message...
received from ('127.0.0.1', 51264) data:hello server.
wating for message...
received from ('127.0.0.1', 51264) data:1563353804.57
wating for message...
received from ('127.0.0.1', 51264) data:1563353806.07
客户端 -- client_udp.py
#!/usr/bin/env python #coding=utf-8import time import socketserver_addr = ('127.0.0.1',8888) buff_len = 1024if __name__ == '__main__':# 创建一个socketudp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)# 发送数据给服务器udp.sendto('hello server.', server_addr)# 阻塞接收服务器数据print(udp.recv(buff_len).decode('utf-8'))while True:udp.sendto(str(time.time()).encode('utf-8'),server_addr)print(udp.recv(buff_len).decode('utf-8'))# 关闭socketudp.close()
打印log如下:
server 1563353804.56509
server 1563353806.0682404
在windows上,若想让python隐藏窗口,可在程序启动后,插入如下代码:
import ctypesmain_wnd = ctypes.windll.kernel32.GetConsoleWindow() if main_wnd != 0: ctypes.windll.user32.ShowWindow(main_wnd, 0) ctypes.windll.kernel32.CloseHandle(main_wnd)
转载于:https://www.cnblogs.com/kekec/p/11202236.html
python前后台tcp/udp通讯示例相关推荐
- PYTHON通过TCP/IP通讯方式远程控制Epson机械臂
PYTHON通过TCP/IP通讯方式远程控制Epson机械臂 一,控制器程序(server) 程序示例 通讯函数: #定义TCP连接 Function connectSetNet #201, &quo ...
- python socket.socket()函数 套接字详解及TCP、UDP程序示例(粘包等)
文章目录 socket的定义 套接字的工作流程 socket函数使用 socket函数用法 服务端套接字函数 客户端套接字函数 公共用途的套接字函数 面向文件的套接字方法 打电话的流程演示 服务端.p ...
- Visual C++设计UDP协议通讯示例
Visual C++设计UDP协议通讯示例 2005-06-06 15:56作者:fs007出处:vckbase责任编辑:方舟 下载本文源代码 一.绪言 UDP是一种面向非连接,不可靠的通讯协议,相对 ...
- C++设计UDP协议通讯示例
UDP是一种面向非连接,不可靠的通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高 一.绪言 UDP是一种面向非连接,不可靠的通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高.所以在 ...
- python socket发包_python 多线程tcp udp发包 Dos工具。
[使用 异步多线程TCP Socket 实现进程间通信(VC 6.0 , BCB6.0调试通过) 进程间通信有很多种方式,比如说 Pipe,共享内存,DDE,Socket等,关于 ...
- python实现tcp发包_python 多线程tcp udp发包 Dos工具。
现在肉鸡上面linux越来越多,都默认安装了python,有时候没有工具的时候可以自己写一个: 下面是支持 tcp和udp的python的发包代码: import socket,sys,threadi ...
- LWIP裸机环境下实现TCP与UDP通讯(转)
源: LWIP裸机环境下实现TCP与UDP通讯
- LWIP裸机环境下实现TCP与UDP通讯
前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...
- java udp 心跳,udp简略通讯示例-心跳示例
当前位置:我的异常网» 软件架构设计 » udp简略通讯示例-心跳示例 udp简略通讯示例-心跳示例 www.myexceptions.net 网友分享于:2013-09-04 浏览:44次 ud ...
最新文章
- 这个第三方登录开源工具,支持市面上几乎所有主流平台!好用!
- Vulnhub靶场渗透练习(二) Billu_b0x
- php 读取mysql 二维数组_PHP操作 二维数组模拟mysql函数
- Swift与OC混编
- 人物角色群体攻击判定四(三角区域判断)
- H.265视频编码原理总结
- godaddy无法修改域名服务器,GoDaddy域名修改DNS教程 - 修改DNSPOD及CLOUDXNS免费DNS
- 数字化时代,如何提高企业的交易管理效率?
- php青蛙跳井代码,初八葬一青蛙跳井怪穴------行龙点劲!
- linux下解压system.img,小白如何修改解包打包system.img
- 换了3根高清线后,第四根mini dp转HDMI线终于可以显示4K了
- 寺库不再值得认可:违法案例频现,“便宜货”让罗敏和趣店亏惨
- 代码提交到GitHub时出现的反复报错
- 「真香系列」新物种首发亮相 聚划算爆款孵化玩法升级
- 剑指Offer面试题:31.两个链表的第一个公共节点
- allegro17.4的brd文件用AD打开
- python opencv入门 Meanshift 和 Camshift 算法(40)
- can总线短距离不用双绞线_CAN 总线(一) 物理层—屏蔽双绞线
- 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
- 抽取JS语法树的基本模块
热门文章
- Android Studio下导出jar包和aar包
- oracle分区唯一索引,关于分区表与唯一索引的测试记录
- Java 基础【13】 I/O流概念分析整理
- ERROR 1045 (28000): Access denied for user 'backup'@'mysql' (using password: YES)
- ORM框架之Spring Data JPA(三)高级查询---复杂查询
- log4j配置以及logback配置
- 程序员高效学习,坚持十年就是大师
- 微信小程序开发资料汇总
- 关于用C#编写ActiveX控件3(转)
- python键_Python键盘按键模拟