一个简单的聊天室

使用pythontwisted框架编写一个简单的聊天室

下面是基本架构

 

# -*- coding:utf-8 -*-
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
user = {}
class ChatReci(LineReceiver):             #定义一个类,这里继承的是LineReceiver
    
def __init__(self):                    #初始化2个变量
        
self.name = ''
        
self.state = "game"

    def 
connectionMade(self):                     #连接协议,当客户端连接即发出消息
        
self.sendLine("input you  name?")

    def lineReceived(self, data):                 #这个函数定义了取名 打印欢迎界面,以及发送信息给连上来的用户
        
if self.name == '':                       #判断名字是否为空  如果为空就进行下面的操作
            
self.name = data                       #给self.name赋值
            
self.sendLine("you welcome, %s!" % (self.name))       #打印欢迎信息
            
user[self.name] = self                 #赋值给user
            
print '%s loging' %data              #打印登录信息
        
else:                                       #不为空就打印信息
            
message = "<%s> %s" % (self.name, data)   #定义聊天信息
            
for ur,protocol in user.items():          #取他的用户名
                
if protocol != user:                   #判断他是不是一个用户 如果不是就传送消息
                    
protocol.sendLine(message)         #传送消息

factory = Factory()              #定义工厂
factory.protocol = ChatReci      #绑定我的类
reactor.listenTCP(22222, factory)   #绑定端口和工厂
reactor.run()                            #启动

 

效果图:

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Java聊天室示例: ``` import java.io.*; import java.net.*; public class ChatRoomServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(5000); System.out.println("Server started."); Socket clientSocket = serverSocket.accept(); System.out.println("Client " + clientSocket.getInetAddress() + " connected."); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String inputLine, outputLine; while ((inputLine = in.readLine()) != null) { System.out.println("Client: " + inputLine); if (inputLine.equals("bye")) break; outputLine = stdIn.readLine(); System.out.println("Server: " + outputLine); out.println(outputLine); } out.close(); in.close(); clientSocket.close(); serverSocket.close(); } } ``` 上述代码实现了一个简单聊天室服务器,它监听端口5000,等待客户端连接。每当客户端连接时,服务器会创建一个输入流和一个输出流,用于读取客户端发送的消息和向客户端发送消息。服务器还创建一个标准输入流,用于读取服务器管理员的输入。在while循环中,服务器将等待客户端发送消息,然后将其打印到控制台并将其发送回客户端。如果客户端发送“bye”消息,则服务器将关闭与该客户端的连接并退出。 下面是一个简单的Java聊天室客户端示例: ``` import java.io.*; import java.net.*; public class ChatRoomClient { public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 5000); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String inputLine, outputLine; while ((inputLine = stdIn.readLine()) != null) { out.println(inputLine); if (inputLine.equals("bye")) break; outputLine = in.readLine(); System.out.println("Server: " + outputLine); } out.close(); in.close(); socket.close(); } } ``` 上述代码实现了一个简单聊天室客户端,它连接到localhost上的端口5000。每当管理员输入一行消息时,客户端会将该消息发送到服务器,并等待服务器的响应。客户端还将打印服务器发送的消息到控制台。如果管理员输入“bye”消息,则客户端将关闭与服务器的连接并退出。 您可以在命令行中启动ChatRoomServer,然后启动多个ChatRoomClient来模拟多个客户端连接到聊天室,这样他们就可以互相发送消息了。请注意,此代码示例并不是一个完整的聊天室应用程序,它只是一个简单的演示。在实际应用中,您可能需要添加更多的功能和安全性措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值