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统计cpu利用率的方法
Jun 02 Python
Python base64编码解码实例
Jun 21 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
Python处理中文标点符号大集合
May 14 Python
Python3基于sax解析xml操作示例
May 22 Python
一百多行python代码实现抢票助手
Sep 25 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
python多进程读图提取特征存npy
May 21 Python
利用Python脚本批量生成SQL语句
Mar 04 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 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
一个用php3编写的简单计数器
2006/10/09 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Django中使用Celery的教程详解
2018/08/24 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
pandas 层次化索引的实现方法
2019/07/06 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
python中if及if-else如何使用
2020/06/02 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
年度考核自我评价
2014/01/25 职场文书
森林防火工作方案
2014/02/14 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
公司考勤管理制度
2015/08/04 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
golang内置函数len的小技巧
2021/07/25 Golang