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 @property的用法及含义全面解析
Feb 01 Python
对python中的for循环和range内置函数详解
Apr 17 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
Python常见数字运算操作实例小结
Mar 22 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
python opencv 简单阈值算法的实现
Aug 04 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
查看keras的默认backend实现方式
Jun 19 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
Python+DeOldify实现老照片上色功能
Jun 21 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中的替代语法简介
2014/08/22 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
IE中createElement需要注意的一个问题
2010/07/13 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
浅谈js闭包理解
2019/03/28 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python 多进程和数据传递的理解
2017/10/09 Python
numpy数组拼接简单示例
2017/12/15 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python多线程thread及模块使用实例
2020/04/28 Python
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
党员干部公开承诺书
2014/03/26 职场文书
调查研究项目计划书
2014/04/29 职场文书
公司活动总结怎么写
2014/06/25 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
谢师宴学生致辞
2015/07/27 职场文书
化验室安全管理制度
2015/08/06 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers