Python基于socket实现简单的即时通讯功能示例


Posted in Python onJanuary 16, 2018

本文实例讲述了Python基于socket实现简单的即时通讯功能。分享给大家供大家参考,具体如下:

客户端tcpclient.py

# -*- coding: utf-8 -*-
import socket
import threading
# 目标地址IP/URL及端口
target_host = "127.0.0.1"
target_port = 9999
# 创建一个socket对象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接主机
client.connect((target_host,target_port))
def handle_send():
  while True:
    content = raw_input()
    client.send(content)
def handle_receive():
  while True:
    response = client.recv(4096)
    print response
send_handler = threading.Thread(target=handle_send,args=())
send_handler.start()
receive_handler = threading.Thread(target=handle_receive,args=())
receive_handler.start()

服务器端tcpserver.py

# -*- coding: utf-8 -*-
import socket
import threading
# 监听的IP及端口
bind_ip = "127.0.0.1"
bind_port = 9999
#socket 服务器初始化
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((bind_ip,bind_port))
server.listen(5)
print "[*] Listening on %s:%d" % (bind_ip,bind_port)
# 定义函数handle_client,输入参数client_socket
def handle_client():
  while True:
    request = client_socket.recv(1024)
    print "[*] Received:%s" % request
def handle_send():
  while True:
    content = raw_input()
    client_socket.send(content);
#阻塞在这里,等待接收客户端的数据
client_socket,addr = server.accept()
print "[*] Accept connection from:%s:%d" % (addr[0],addr[1])
#创建一个线程
client_handler = threading.Thread(target=handle_client,args=())
client_handler.start()
send_handler = threading.Thread(target=handle_send,args=())
send_handler.start()

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

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

Python 相关文章推荐
Python时间的精准正则匹配方法分析
Aug 17 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
Python实现批量压缩图片
Jan 25 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
在python中实现强制关闭线程的示例
Jan 22 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
Pandas的数据过滤实现
Jan 15 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 Python
python中将字典形式的数据循环插入Excel
Jan 16 #Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 #Python
详解python函数传参是传值还是传引用
Jan 16 #Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 #Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 #Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 #Python
Python+matplotlib实现填充螺旋实例
Jan 15 #Python
You might like
PHP对象Object的概念 介绍
2012/06/14 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Python检测数据类型的方法总结
2019/05/20 Python
python tkinter canvas使用实例
2019/11/04 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
几个人围成一圈的问题
2013/09/26 面试题
社区志愿者心得体会
2014/01/03 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
反邪教学习心得体会
2016/01/15 职场文书