• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 小小聊天室Python代码实现

小小聊天室Python代码实现

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python聊天室,python实现聊天室,python 多人聊天室,用python写一个聊天室,python socket 聊天室等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

相对于Java方式的聊天室,Python同样可以做得到。而且可以做的更加的优雅。想必少了那么多的各种流的Python Socket,你一定会喜欢的。
至于知识点相关的内容,这里就不多说了。

UDP方式

服务器端

# coding:utf-8

#  __author__ = 'Mark sinoberg'
#  __date__ = '2016/7/7'
#  __Desc__ = 创建一个简单的套接字监听请求

import socket

HOST = '192.168.59.255'
PORT = 9998

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('',PORT))
print '套接字已启动!'
while True:
  data,addr = s.recvfrom(1024)
  print addr,str(' : ')+data

</div>

客户端

# coding:utf-8

#  __author__ = 'Mark sinoberg'
#  __date__ = '2016/7/7'
#  __Desc__ = socket的客户端的简单实现

import socket

PORT = 9998
HOST = '192.168.59.255'
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
words = raw_input('Client:')
while words != 'quit':
  s.sendto(words,(HOST,PORT))
  words = raw_input('Client:')
s.close()

</div>

是不是很简单啊。我们需要注意的就是socket的第二个参数为SOCK_DGRAM。因为这和TCP方式的SOCK_STREAM 有所不同。

TCP方式

服务器端

# coding:utf-8

#  __author__ = 'Mark sinoberg'
#  __date__ = '2016/7/7'
#  __Desc__ = 简单的tcpsocket的实现

from socket import *
from time import ctime

HOST = ''
PORT = 9999
BUFFERSIZE = 1024
ADDRESS = (HOST,PORT)

s = socket(AF_INET,SOCK_STREAM)
s.bind(ADDRESS)
s.listen(5)

while True:
  print 'Waiting for clients cennect!'
  tcpclient,addr = s.accept()
  print 'Connected By ',addr

  while True:
    try:
      data = tcpclient.recv(BUFFERSIZE)
    except Exception,e:
      print e.message
      tcpclient.close()
      break
    if not data:
      print "No Data received!"
      break
    senddata = 'Hi,you send me:[%s]%s'%(ctime(),data.encode('utf8'))
    tcpclient.send(senddata.encode('utf8'))
    print addr,' Says:',ctime(),data.encode('utf8')

tcpclient.close()
s.close()

</div>

 客户端

# coding:utf-8

#  __author__ = 'Mark sinoberg'
#  __date__ = '2016/7/7'
#  __Desc__ = 简单的tcp socket客户端的实现

from socket import *

class TcpClient:
  # HOST = 'localhost'
  PORT = 9999
  HOST = '192.168.59.225'
  BUFFSIZ = 1024
  ADDR = (HOST,PORT)
  def __init__(self):
    self.client = socket(AF_INET,SOCK_STREAM)
    self.client.connect((self.HOST,self.PORT))

    while True:
      senddata = raw_input('>>>')
      if not senddata:
        print 'Please input some words!\n>>>'
        continue
      if senddata == "quit":
        break
      self.client.send(senddata.encode('utf8'))
      recvdata = self.client.recv(self.BUFFSIZ)
      if not recvdata:
        break
      print recvdata.encode('utf8')

if __name__ == "__main__":
  client = TcpClient()

</div>

TCP方式演示结果:(注意先开启服务器端)

服务器端

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTCPServer.py
Waiting for clients cennect!
Connected By  ('192.168.59.225', 63095)
('192.168.59.225', 63095)  Says: Thu Jul 07 16:01:10 2016 Hello World
('192.168.59.225', 63095)  Says: Thu Jul 07 16:01:15 2016 haode
No Data received!
Waiting for clients cennect!

客户端

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTcpClient.py
>>>Hello World
Hi,you send me:[Thu Jul 07 16:01:10 2016]Hello World
>>>
Please input some words!
>>>
>>>haode
Hi,you send me:[Thu Jul 07 16:01:15 2016]haode
>>>quit

Process finished with exit code 0

总结

简单的使用TCP或者是UDP确实很容易,然而要想更好的利用这两个协议,就需要好好的设计一番了。

这里我想强调的是,注意tcp和udp创建套接字时指定的参数即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>

您可能想查找下面的文章:

  • 小小聊天室Python代码实现
  • 小小聊天室Python代码实现

相关文章

  • Python中使用logging模块代替print(logging简明指南)
  • python抓取最新博客内容并生成Rss
  • 从Python的源码来解析Python下的freeblock
  • Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
  • python与php实现分割文件代码
  • 跟老齐学Python之眼花缭乱的运算符
  • python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
  • Python写的一个简单监控系统
  • Python中基本的日期时间处理的学习教程
  • Python实现代码统计工具(终极篇)

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python Tkinter基础控件用法
    • python对数组进行反转的方法
    • python动态文本进度条的实例代码
    • Python处理RSS、ATOM模块FEEDPARSER介绍
    • Python 类与元类的深度挖掘 II【经验】
    • Python中返回字典键的值的values()方法使用
    • python将图片文件转换成base64编码的方法
    • python统计cpu利用率的方法
    • python检测lvs real server状态
    • python通过pil将图片转换成黑白效果的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有