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 pickle 和 shelve模块的用法
Sep 16 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
python定时器(Timer)用法简单实例
Jun 04 Python
python编写弹球游戏的实现代码
Mar 12 Python
python3实现多线程聊天室
Dec 12 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 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(7) php 字符串相关应用
2010/03/05 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
2007/03/08 Javascript
javascript date格式化示例
2013/09/25 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
Vue.use源码分析
2017/04/22 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
基于python select.select模块通信的实例讲解
2017/09/21 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python实现抖音点赞功能
2019/04/07 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
制定岗位职责的原则
2013/11/08 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
摄影展策划方案
2014/06/02 职场文书
文明城市创建标语
2014/06/16 职场文书
连锁超市项目计划书
2014/09/15 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
员工离职通知函
2015/04/25 职场文书