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 13 Python
跟老齐学Python之私有函数和专有方法
Oct 24 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
set在python里的含义和用法
Jun 24 Python
Python中__repr__和__str__区别详解
Nov 07 Python
python的setattr函数实例用法
Dec 16 Python
如何用Django处理gzip数据流
Jan 29 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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环境――Appserv
2006/12/13 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
js 操作符实例代码
2009/10/24 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
联想英国官网:Lenovo英国
2019/07/17 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
志愿者服务感言
2014/02/27 职场文书
给校长的一封建议书
2014/03/12 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS