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语言技巧之三元运算符使用介绍
Mar 04 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
Python 判断奇数偶数的方法
Dec 20 Python
python pillow模块使用方法详解
Aug 30 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
python实现简单俄罗斯方块
Mar 13 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
python中return如何写
Jun 18 Python
python 6行代码制作月历生成器
Sep 18 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
封装一个PDO数据库操作类代码
2009/09/09 PHP
培养自己的php编码规范
2015/09/28 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
详解python如何引用包package
2020/06/07 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
马来西亚网上购物:Youbeli
2018/03/30 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
青年文明号复核材料
2014/02/11 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2014年度安全工作总结
2014/12/04 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书