非阻塞服务器

服务端

import socket

server = socket.socket()        #创建套接字
server.setblocking(False)       #把套接字设置为非阻塞
server.bind(('0.0.0.0', 8001))  #绑定IP和端口
server.listen(5)                #监听端口


all_connection = []             #保存已经连接的客户
while True:
    #只管连接的事情
    try:
        conn, addr = server.accept()    # 建立连接,没有就抛出异常
        conn.setblocking(False)         #设置非阻塞
        print('用户连接:', addr)
        all_connection.append(conn)
    except Exception as e:
        pass


    #处理已经连接用户的消息
    handle = all_connection.copy()  #完全拷贝了列表
    for connection in handle:
        try:
            recv_data = connection.recv(1024)
            if recv_data:
                print(recv_data.decode())
                connection.send(recv_data)
            else:                               #客户端消息处理完了,已经断开了连接
                print('断开连接', connection)
                connection.close()
                all_connection.remove(connection)       #从客户列表里移除断开连接的客户
        except Exception as e:
            pass

客户端

import socket

client = socket.socket()
client.connect(('127.0.0.1',8889))

while True:
    data = input('输入数据:')
    if data:
        client.send(data.encode())
        recv_data = client.recv(1024)
        print(recv_data.decode())
    else:
        break

client.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web.Java是一个高性能,轻量级的阻塞服务器。 为了能更好的提高性能,Web.Java把HTTP服务区分应用和文件服务两种。 Web.Java 整体采用Reactor模式用来接收或响应HTTP请求(原理同Nginx)。 应用服务采用了Reactor来响应请求。 文件服务采用了Proactor模式,并搭配304状态使用,能极大的提高静态文件的相应速度,且不影响整体。 模板引擎 简单的标签:只需要记住{{}}标签用于输出变量,{%%}标签用于if,for 等操作。 可以继承的模版:页面的布局,HTML文件的复用等问题,通过模版继承机制可以得到解决。用{%extends xx%}关键字实现继承。 高性能:Web.Java会自动把Html文件,编译成Java文件。应用到生产环境的时候,速度等同于Java的硬输出。且在DEBUG模式下,会动态的加载模板文件,而不需要重启进程。 灵活漂亮的URL 随便打开几个J2EE的网站,我就不想吐槽那个URL了。Web.Java使用正则表达式来配置URL,这样做可以提供足够强大和灵活的URL模式。比如像用“/Article/23”想获取文章的ID可以这样来配置URL HttpServer.setPATH("/Article/(\\d )",new ArticleHandler());   //ArticleHandler.java文件 get方法 public void get(String id){     //获取ID进行其他操作   ……   } 这样在ArticleHandler中对应的get或者post方法中就会获取相应的参数。当然,你可以任意的使用正则表达式来配置你的URL 简单易用的数据库操作 Options.DBURL = "jdbc:mysql://localhost:3306/test"; Options.DBDriver = "com.mysql.jdbc.Driver"; Options.DBUser = "root"; Options.DBPassword = "123456"; 配置好数据库信息后,可以直接在Handler中使用DB中的静态方法进行操作。 具体的操作在DB中有说明。当然如果你想,可以使用任何你想用的ORM。当然,希望你能直接使用SQL,不想解释为什么。 Hello World! 看名字就知道了。让我们开始使用Web.Java吧! 把源码包放到你的项目目录下面。 然后在main方法中加入 HttpServer.setPATH("/", new IndexHandler()); System.out.println("Listen 8080"); HttpServer.init(8080); IndexHandler.java public void get() {     this.writer("Hello World!"); } 现在Run it 浏览器打开就会看到你Writer的内容了。 标签:WebJava

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值