java socket封装_一个简单的socket封装

SSSocket是一个简单的Java Socket接口,旨在提供非阻塞、跨平台的消息读写功能,特别适合手机网游客户端。其特点包括非阻塞连接与IO,内置读写缓冲区,并提供方便的消息API。虽然单线程使用可能导致读写速度稍慢,但通过避免阻塞UI,它能确保良好的用户体验。接口包括创建、关闭Socket,以及检查、读写缓冲区的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SSSocket, 意思是simple stupid socket interface

目的:

编写一个易于消息数据读写、非阻塞、跨平台的socket封装。目前用于手机网游客户端

优点:

1.采用非阻塞的连接和IO,即使是单线程也不会阻塞UI

2.提供读写buffer

3.对完整消息读取友好的API

缺点:

1.单线程使用方式,目前考虑是游戏的每一帧,非阻塞的读写一次数据。与多线程或者阻塞IO方式相比,读写速度上差了一些

2.buffer使用的只是原生数组。从缓冲区取出数据后,缓冲区尾部未读取数据会用内存拷贝的方式移动到头部

接口:

//create a socket , ready to connect to host define by host_name and port

struct ssso* ssso_new(const char* host_name, int port);

//close socket

void ssso_free(struct ssso* so);

//update socket, write data from buffer to socket, and if there is data readable, it return 1

int ssso_check(struct ssso* so);

//peek whether has data of size in read buffer, return data or NULL

void* ssso_peek(struct ssso* so, size_t size);

//discard data of size in read buffer, mainly use after geting integrate message data using ssso_peek

void ssso_discard(struct ssso* so, size_t size);

//write data to buffer, after do ssso_check, the data may be send through socket

void ssso_write(struct ssso* so, const void* data, size_t size);

enum SSSO_STATUS ssso_status(struct ssso* so);

源代码地址:

参考:

API设计参考了云风的mread

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值