以下代码兼容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通讯示例相关推荐

  1. PYTHON通过TCP/IP通讯方式远程控制Epson机械臂

    PYTHON通过TCP/IP通讯方式远程控制Epson机械臂 一,控制器程序(server) 程序示例 通讯函数: #定义TCP连接 Function connectSetNet #201, &quo ...

  2. python socket.socket()函数 套接字详解及TCP、UDP程序示例(粘包等)

    文章目录 socket的定义 套接字的工作流程 socket函数使用 socket函数用法 服务端套接字函数 客户端套接字函数 公共用途的套接字函数 面向文件的套接字方法 打电话的流程演示 服务端.p ...

  3. Visual C++设计UDP协议通讯示例

    Visual C++设计UDP协议通讯示例 2005-06-06 15:56作者:fs007出处:vckbase责任编辑:方舟 下载本文源代码 一.绪言 UDP是一种面向非连接,不可靠的通讯协议,相对 ...

  4. C++设计UDP协议通讯示例

    UDP是一种面向非连接,不可靠的通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高 一.绪言 UDP是一种面向非连接,不可靠的通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高.所以在 ...

  5. python socket发包_python 多线程tcp udp发包 Dos工具。

    [使用 异步多线程TCP Socket 实现进程间通信(VC 6.0 , BCB6.0调试通过)            进程间通信有很多种方式,比如说 Pipe,共享内存,DDE,Socket等,关于 ...

  6. python实现tcp发包_python 多线程tcp udp发包 Dos工具。

    现在肉鸡上面linux越来越多,都默认安装了python,有时候没有工具的时候可以自己写一个: 下面是支持 tcp和udp的python的发包代码: import socket,sys,threadi ...

  7. LWIP裸机环境下实现TCP与UDP通讯(转)

    源: LWIP裸机环境下实现TCP与UDP通讯

  8. LWIP裸机环境下实现TCP与UDP通讯

    前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...

  9. java udp 心跳,udp简略通讯示例-心跳示例

    当前位置:我的异常网» 软件架构设计 » udp简略通讯示例-心跳示例 udp简略通讯示例-心跳示例 www.myexceptions.net  网友分享于:2013-09-04  浏览:44次 ud ...

最新文章

  1. 这个第三方登录开源工具,支持市面上几乎所有主流平台!好用!
  2. Vulnhub靶场渗透练习(二) Billu_b0x
  3. php 读取mysql 二维数组_PHP操作 二维数组模拟mysql函数
  4. Swift与OC混编
  5. 人物角色群体攻击判定四(三角区域判断)
  6. H.265视频编码原理总结
  7. godaddy无法修改域名服务器,GoDaddy域名修改DNS教程 - 修改DNSPOD及CLOUDXNS免费DNS
  8. 数字化时代,如何提高企业的交易管理效率?
  9. php青蛙跳井代码,初八葬一青蛙跳井怪穴------行龙点劲!
  10. linux下解压system.img,小白如何修改解包打包system.img
  11. 换了3根高清线后,第四根mini dp转HDMI线终于可以显示4K了
  12. 寺库不再值得认可:违法案例频现,“便宜货”让罗敏和趣店亏惨
  13. 代码提交到GitHub时出现的反复报错
  14. 「真香系列」新物种首发亮相 聚划算爆款孵化玩法升级
  15. 剑指Offer面试题:31.两个链表的第一个公共节点
  16. allegro17.4的brd文件用AD打开
  17. python opencv入门 Meanshift 和 Camshift 算法(40)
  18. can总线短距离不用双绞线_CAN 总线(一) 物理层—屏蔽双绞线
  19. 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
  20. 抽取JS语法树的基本模块

热门文章

  1. Android Studio下导出jar包和aar包
  2. oracle分区唯一索引,关于分区表与唯一索引的测试记录
  3. Java 基础【13】 I/O流概念分析整理
  4. ERROR 1045 (28000): Access denied for user 'backup'@'mysql' (using password: YES)
  5. ORM框架之Spring Data JPA(三)高级查询---复杂查询
  6. log4j配置以及logback配置
  7. 程序员高效学习,坚持十年就是大师
  8. 微信小程序开发资料汇总
  9. 关于用C#编写ActiveX控件3(转)
  10. python键_Python键盘按键模拟