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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python基础入门之seed()方法的使用
May 15 Python
简单解决Python文件中文编码问题
Nov 22 Python
简单了解Python中的几种函数
Nov 03 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
Python Numpy库的超详细教程
Apr 06 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/10/03 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vue接入腾讯防水墙代码
2019/05/07 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Numpy中的mask的使用
2018/07/21 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
南京某公司笔试题
2013/01/27 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
计算机实训报告总结
2014/11/05 职场文书
教师求职简历自我评价
2015/03/10 职场文书
高一作文之暖冬
2019/11/09 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
zabbix配置nginx监控的实现
2022/05/25 Servers