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中使用dom模块生成XML文件示例
Apr 05 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
pymongo中聚合查询的使用方法
Mar 22 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Python对excel的基本操作方法
Feb 18 Python
Django与数据库交互的实现
Jun 03 Python
一文搞懂python异常处理、模块与包
Jun 26 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 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
PHP中的CMS的涵义
2007/03/11 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
浅谈php自定义错误日志
2015/02/13 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
php二维码生成以及下载实现
2017/09/28 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Python 实现一个计时器
2020/07/28 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
大专生自荐信
2013/10/04 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
情况说明书怎么写
2015/10/08 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers