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修改注册表终止360进程实例
Oct 13 Python
python编码最佳实践之总结
Feb 14 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Python WSGI的深入理解
Aug 01 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
Python解析多帧dicom数据详解
Jan 13 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
对Python 字典元素进行删除的方法
Jul 31 Python
python脚本框架webpy的url映射详解
Nov 20 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
深入学习python的yield和generator
2016/03/10 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
python实现简单加密解密机制
2019/03/19 Python
python设置随机种子实例讲解
2019/09/12 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
《陶罐和铁罐》教学反思
2014/02/19 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Python实现单例模式的5种方法
2021/06/15 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript