Python简单全双工聊天器

服务器:

 1 #!/usr/bin/python
 2 #enconding:utf-8
 3 import sys
 4 import socket
 5 import select
 6 import time
 7
 8 HOST=‘‘
 9 PORT=21234
10 ADDR=(HOST,PORT)
11 BUFSIZ=8096
12
13 SerSock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
14 SerSock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
15 #SerSock.setblocking(False)
16 SerSock.bind(ADDR)
17 SerSock.listen(10)
18
19 inputs=[SerSock,sys.stdin]
20 outputs=[]
21 timeout=45
22
23
24 while True:
25     tcpCliSock,addr=SerSock.accept()
26     inputs.append(tcpCliSock)
27
28     while True:
29         readyInput,readyOutput,readyException=select.select(inputs,[],[])
30         for indata in readyInput:
31             if indata is tcpCliSock:
32                 data=tcpCliSock.recv(BUFSIZ)
33                 if not data:
34                     break
35                 print "%s from %s"%(data,addr)
36             else:
37                 data=raw_input()
38                 if not data:
39                     break
40                 tcpCliSock.send(‘[%s] %s‘%(time.ctime(),data))
41
42 tcpCliSock.close()

客户端:

 1 #!/usr/bin/python
 2 import sys
 3 import socket
 4 import select
 5
 6 HOST=‘localhost‘
 7 PORT=21234
 8 ADDR=(HOST,PORT)
 9 BUFSIZ=8096
10
11 CliSock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
12 CliSock.connect(ADDR)
13
14 inputs=[CliSock,sys.stdin]
15 outputs=[]
16
17 while inputs:
18     readable,writable,exceptional=select.select(inputs,outputs,inputs)
19     for s in readable:
20         if s is CliSock:
21             data=s.recv(BUFSIZ)
22             if data:
23                 print "%s from server"%data
24             else:
25                 continue
26         else:
27             data=raw_input()
28             if not data:
29                 break
30             CliSock.send(data)
31 CliSock.close()
时间: 2024-10-22 21:08:47

Python简单全双工聊天器的相关文章

python 简单p2p聊天程序

目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一 般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其

JavaSE小练习(简单的聊天器)

为了巩固JavaSE的知识,练习一哈,大神绕道.下面贴一下代码. Client端代码 package GUI; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; impor

python使用udp实现聊天器

聊天器简易版 使用udp实现一个简单的聊天器程序,要求如下: 在一个电脑中编写1个程序,有2个功能 1.获取键盘数据,并将其发送给对方 2.接收数据并显示 并且功能数据进行选择以上的2个功能调用 例子程序如下: import socket def send_message(udp_socket): # 输入对方的ip/port dest_ip = input("请输入对方的ip:") dest_port = int(input("请输入对象的port:")) # 读

Python实现多用户全双工聊天(一对一)

多用户全双工聊天简陋版 简单实现了两个客户端之间的通信,客户端发送消息,先由服务器接收,然后服务器转发到另一客户端. 该版本功能非常简陋,仅仅实现了最简单的聊天,有很多地方需要注意. 工作步骤: 服务器端运行 一个客户端运行,连接成功后输入用户名,服务器会保存该用户名在一个字典中,字典的对应关系是 username --> socket 输入用户名之后,该客户端需要确定一个聊天用户,客户端输入To:user即可:如果客户端发送其他文本的话,会收到来自服务器的提示:"Nobody is ch

通过python 构建一个简单的聊天服务器

构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使用 Telnet,客户机可以连接到 Python 聊天服务器上,并在全球范围内相互进行通信.提交到聊天服务器的消息可以由其他人进行查看(以及一些管理信息,例如客户机加入或离开聊天服务器).这个模型如图 1 所示. 图 1. 聊天服务器使用 select 方法来支持任意多个客户机 聊天服务器的一个重要

python练习四—简单的聊天软件

python最强大的是什么?库支持!!有了强大的库支持,一个简单的聊天软件实现就更简单了,本项目思路如下 # 项目思路 1. 服务器的工作 * 初始化服务器 * 新建一个聊天房间 * 维护一个已链接用户的会话列表 * 维护一个已登录用户的字典,用户名和会话 * 监听端口,接受会话,并启动一个ChatSession处理 2. 会话线程 * 初始化一个接收数据缓冲区 * 处理用户输入的命令,并提醒用户先登录(也就是说目前指处理登陆命令) * 将用户输入的数据加入缓冲区 * 用户一次输入结束后,将缓冲

python 开发简单的聊天工具-乾颐堂

python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天,只是它还包含了更加复杂的功能.基本原理是一样的. python实现聊天功能,主要用到了socket模块.下面直接上实例吧 server端 1 2 3 4 5 6 7 8 9 10 11 12 13 import socket s=socket.socket() #建立socket链接 s.bind

Python之简单理解装饰器(1)

装饰器是Python高级应用的一部分,其应用也很广泛.网上对其介绍和讲解也是五花八门,我在这里就对其进行简单介绍,并对如何渐进理解使用装饰器进行说明,以便和大家共同学习.如有更高见解,也请大家留言指正. 装饰器概念简单理解 循序渐进装饰器 装饰器概念简单理解 装饰器按照我的理解,就是在不改变原有函数代码的情况下,对原有函数进行功能的扩展. 这里先写个简单的装饰器,给大家有个概念性的认识. def anotherone(func):  #定义装饰器     def inner():        

python 开发简单的聊天工具

python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天,只是它还包含了更加复杂的功能.基本原理是一样的. python实现聊天功能,主要用到了socket模块.下面直接上实例吧 server端 1 2 3 4 5 6 7 8 9 10 11 12 13 import socket s=socket.socket() #建立socket链接 s.bind