Python聊天室程序(基础版)


Posted in Python onApril 01, 2018

本文实例为大家分享了Python聊天室程序的具体代码,供大家参考,具体内容如下

客户端代码:

# Filename: socketClient.py 
 
import socket 
import sys 
import threading 
 
# Client GUI 
from tkinter import * 
import Pmw 
 
 
 
# Create a TCP/IP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# Connect the socket to the port where the server is listening 
server_address = ('localhost', 10000) 
print (sys.stderr, 'connecting to %s port %s' % server_address) 
sock.connect(server_address) 
 
root = Tk() 
# textDisplay 
textDisplay = Pmw.ScrolledText(root) 
textDisplay.pack(expand=1, padx=5, pady=5,side = LEFT) 
# textInput 
textInput = Pmw.ScrolledText(root) 
textInput.pack(expand=1, padx=5, pady=5,side = LEFT) 
# Send Button and its callback 
def sendMsg(event): 
 message = socket.gethostname()+':'+ textInput.get() 
 #print (sys.stderr, 'sending "%s"' % message) 
 print(message) 
 sock.sendall(message.encode()) 
 textInput.clear() 
 #data = sock.recv(100) 
 #textDisplay.insert(END, data) 
 #print (sys.stderr, 'received "%s"' % data) 
  
sendBtn = Button(root, text="Send") 
sendBtn.bind('<Button-1>', sendMsg) 
sendBtn.pack(side = LEFT) 
 
def receiveMsg(): 
 while True: 
  data = sock.recv(100) 
  print (sys.stderr, 'client received "%s"' % data) 
  textDisplay.insert(END, data) 
  
 
receiveThread = threading.Thread(name='waitForMSG', target=receiveMsg) 
receiveThread.start() 
 
root.mainloop()

 服务器端代码:

# Filename: socketServer.py 
 
import socket 
import sys 
 
# Create a TCP/IP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 
# Bind the socket to the port 
server_address = ('localhost', 10000) 
print (sys.stderr, 'starting up on %s port %s' % server_address) 
sock.bind(server_address) 
 
# Listen for incoming connections 
sock.listen(1) 
 
while True: 
 # Wait for a connection 
 print (sys.stderr, 'waiting for a connection') 
 connection, client_address = sock.accept() 
 
 try: 
  print (sys.stderr, 'connection from', client_address) 
 
  # Receive the data in small chunks and retransmit it 
  while True: 
   data = connection.recv(16) 
   print (sys.stderr, 'received "%s"' % data) 
   if data: 
    print (sys.stderr, 'sending data back to the client') 
    connection.sendall(data) 
   else: 
    print (sys.stderr, 'no data from', client_address) 
    break 
 finally: 
  # Clean up the connection 
  connection.close()

客户端在监听服务器的消息采用了多线程的方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作串口的方法
Jun 17 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
Python之修改图片像素值的方法
Jul 03 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
python 求10个数的平均数实例
Dec 16 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
python字典通过值反查键的实现(简洁写法)
Sep 30 Python
python 离散点图画法的实现
Apr 01 Python
Python socket实现简单聊天室
Apr 01 #Python
简单实现python聊天程序
Apr 01 #Python
简单实现Python爬取网络图片
Apr 01 #Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 #Python
python之DataFrame实现excel合并单元格
Feb 22 #Python
python合并同类型excel表格的方法
Apr 01 #Python
python实现两个文件合并功能
Apr 01 #Python
You might like
discuz安全提问算法
2007/06/06 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
浅谈Python的异常处理
2016/06/19 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python的列表List求均值和中位数实例
2020/03/03 Python
简单了解Django项目应用创建过程
2020/07/06 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
关于工作经历的证明书
2014/10/11 职场文书