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异步回调机制实现和使用方法
Nov 26 Python
分析在Python中何种情况下需要使用断言
Apr 01 Python
详解Python中的文件操作
Aug 28 Python
Python实现的选择排序算法示例
Nov 29 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python如何配置环境变量详解
May 18 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执行速率优化技巧小结
2008/03/15 PHP
PHP学习之正则表达式
2011/04/17 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
python访问系统环境变量的方法
2015/04/29 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
大学生优秀的自我评价分享
2013/10/22 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
绿色校园广播稿
2014/10/13 职场文书
2014年招商工作总结
2014/11/22 职场文书