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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
使用python实现生成用户信息
Mar 20 Python
Python中装饰器学习总结
Feb 10 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
对python中Json与object转化的方法详解
Dec 31 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
Python搭建HTTP服务过程图解
Dec 14 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
pycharm代码删除恢复的方法
Jun 26 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查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
浅谈Express异步进化史
2017/09/09 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
大学学习个人的自我评价
2014/02/18 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
水利水电专业自荐信
2014/07/08 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
辩护词范文大全
2015/05/21 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS