websocket connection to ‘ws://127.0.0.1:9000/‘ failed: one or more reserved bits are on: reserved1 =

websocket connection to 'ws://127.0.0.1:9000/' failed: one or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 1

python服务端向javascript客户端发送消息后客户端断开连接并触发异常:
websocket connection to ‘ws://127.0.0.1:9000/’ failed: one or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 1

解决办法:

在给客户端发消息时调用此方法

def send_msg(conn, msg_bytes):
    """
    WebSocket服务端向客户端发送消息
    :param conn: 客户端连接到服务器端的socket对象,即: conn,address = socket.accept()
    :param msg_bytes: 向客户端发送的字节
    :return:
    """
    import struct

    token = b"\x81"
    length 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是实现BMP图像处理类 `BMPmanager` 的代码示例,包括构造和析构,以及图像读入初始化、反色方法 `Inverse()` 和黑白化方法 `bw()`: ```cpp #include <iostream> #include <fstream> #include <vector> using namespace std; #pragma pack(push, 1) struct BMPHeader { uint16_t type; uint32_t size; uint16_t reserved1; uint16_t reserved2; uint32_t offset; uint32_t header_size; int32_t width; int32_t height; uint16_t planes; uint16_t bits_per_pixel; uint32_t compression; uint32_t image_size; int32_t x_pixels_per_meter; int32_t y_pixels_per_meter; uint32_t colors_used; uint32_t colors_important; }; #pragma pack(pop) class BMPmanager { public: BMPmanager(const char* filename); ~BMPmanager(); void Inverse(); void bw(); void save(const char* filename); private: BMPHeader header_; vector<uint8_t> pixels_; }; BMPmanager::BMPmanager(const char* filename) { // 读入 BMP 文件 ifstream fin(filename, ios::binary); if (!fin) { cerr << "Failed to open file." << endl; return; } // 读入 BMP 头信息 fin.read(reinterpret_cast<char*>(&header_), sizeof(header_)); // 检查文件类型 if (header_.type != 0x4D42) { cerr << "Invalid file format." << endl; return; } // 检查像素位数 if (header_.bits_per_pixel != 24) { cerr << "Unsupported pixel format." << endl; return; } // 读入像素数据 pixels_.resize(header_.width * header_.height * 3); fin.read(reinterpret_cast<char*>(pixels_.data()), pixels_.size()); // 关闭文件 fin.close(); } BMPmanager::~BMPmanager() {} void BMPmanager::Inverse() { for (size_t i = 0; i < pixels_.size(); i += 3) { pixels_[i] = 255 - pixels_[i]; // 反色:红色通道 pixels_[i + 1] = 255 - pixels_[i + 1]; // 反色:绿色通道 } } void BMPmanager::bw() { for (size_t i = 0; i < pixels_.size(); i += 3) { uint8_t gray = (pixels_[i] + pixels_[i + 1] + pixels_[i + 2]) / 3; if (gray > 128) { pixels_[i] = pixels_[i + 1] = pixels_[i + 2] = 255; // 白色 } else { pixels_[i] = pixels_[i + 1] = pixels_[i + 2] = 0; // 黑色 } } } void BMPmanager::save(const char* filename) { // 打开文件 ofstream fout(filename, ios::binary); if (!fout) { cerr << "Failed to open file." << endl; return; } // 写入 BMP 头信息 fout.write(reinterpret_cast<char*>(&header_), sizeof(header_)); // 写入像素数据 fout.write(reinterpret_cast<char*>(pixels_.data()), pixels_.size()); // 关闭文件 fout.close(); } int main() { BMPmanager bmp("example.bmp"); // 读入 BMP 文件 bmp.Inverse(); // 反色处理 bmp.bw(); // 黑白化处理 bmp.save("output.bmp"); // 保存处理后的 BMP 文件 return 0; } ``` 在上述代码中,我们定义了一个名为 `BMPmanager` 的类,其中包含了图像读入和处理的方法。你可以在读入像素数据之后对其进行任何处理。在 `main()` 函数中,我们读入了一个 BMP 文件,并对其进行了反色和黑白化处理,然后将处理后的结果保存为一个新的 BMP 文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值