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基础中所出现的异常报错总结
Nov 19 Python
Python实现完整的事务操作示例
Jun 20 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
Python安装与基本数据类型教程详解
May 29 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
Java中final关键字详解
2015/08/10 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python实现的一个火车票转让信息采集器
2014/07/09 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
python如何代码集体右移
2020/07/20 Python
Python中bisect的用法及示例详解
2020/07/20 Python
Flask处理Web表单的实现方法
2021/01/31 Python
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
护理专业自我鉴定
2014/01/30 职场文书
数控个人求职信范文
2014/02/03 职场文书
公司端午节活动方案
2014/02/04 职场文书
教师节活动主持词
2014/04/02 职场文书
个人授权委托书
2014/04/03 职场文书
医院营销工作计划
2015/01/16 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript