用法:
// 需要启用线程
gj.xc(){
// 创建服务端
// 输入服务端口,服务端超时限制(指定时间内无新连接则关闭服务器,0为无限制),客户端超时限制(已连接的客户端指定时间内未通信则关闭,0为无限制),是否接收新连接请求
s tjz = wl.tjz(6666, 0, 0, true)(so,sr){
// so 服务端对象
// sr 新连接对象
gj.sc(sr.ip() + ":" + sr.dk() + ":" + sr.bjip() + ":" + sr.bjdk())
},(sr,te,mg,bs){
// sr 连接对象
// te 数据类型,0为无数据头字节数组,1为带数据头字符串,2为带数据头文件,3为带数据头字节数组
// mg 数据信息,数据类型为1时值为对应的字符串,数据类型为2时值为文件的后缀
// bs 数据的字节数组
gj.sc(sr + ":" + te + ":" + mg + ":" + bs.length)
}
// 开始,这里线程会被堵塞
tjz.ks()
// 下面的代码将在服务端关闭后执行
gj.sc("服务端已关闭")
}
// 需要启用线程
gj.xc(){
// 创建客户端
// 输入服务器IP,服务端口,超时限制(指定时间内未通信则关闭,0为无限制)
s tjz = wl.tjz("192.168.1.100", 6666, 0)(so,sr){
},(sr,te,mg,bs){
// sr 连接对象
// te 数据类型,0为无数据头字节数组,1为带数据头字符串,2为带数据头文件,3为带数据头字节数组
// mg 数据信息,数据类型为1时值为对应的字符串,数据类型为2时值为文件的后缀
// bs 数据的字节数组
gj.sc(sr + ":" + te + ":" + mg + ":" + bs.length)
}
// 开始
tjz.ks()
}
// 更多方法
// 重启
tjz.cq()
// 开始启动或连接
tjz.ks()
// 连接总数
s ljzs = tjz.ljzs()
// 获取连接列表
s ljlb = tjz.lj()
// 获取指定序号的连接
s lj = tjz.lj(0)
// 连接清空
tjz.ljqk()
// 获取当前是否已关闭
s sfgb = tjz.sfgb()
// 关闭释放
tjz.gb()
// 获取服务器对象
s fwd = tjz.fwd()
// 获取本机的IP
s bjip = tjz.bjip()
// 获取本机的端口
s bjdk = tjz.bjdk()
// 输出数据,返回发送成功数量,如果是服务端则为群发
// 可输出多种类型数据,字符串,字节数组,文件等
gj.xc(){
s sc1 = tjz.sc("nihao")
}
// 输出数据,需要开线程
gj.xc(){
// 输入数据类型,输入数据内容
s sc2 = tjz.sc(1, "nihao")
// 输出文件
//s sc2 = tjz.sc(2, "%a.png")
}
// sr 连接对象的方法
// 获取远程连接的IP
s ip = sr.ip()
// 获取远程连接的端口
s dk = sr.dk()
// 获取本机的IP
s bjip = sr.bjip()
// 获取本机的端口
s bjdk = sr.bjdk()
// 获取当前是否已关闭
s sfgb = sr.sfgb()
// 重启连接
sr.cq()
// 关闭释放
sr.gb()
// 获取连接socket对象
s ljdx = sr.ljdx()
// 设置自定义数据
sr.sj("abcd")
// 获取自定义数据
s sj1 = sr.sj()
// 设置自定义数组数据
s sz = { "abcd", "efg" }
sr.szsj(sz)
// 获取自定义数组数据
s sjsz = sr.szsj()
// 输出数据,返回发送成功数量,如果是服务端则为群发
// 可输出多种类型数据,字符串,字节数组,文件等
gj.xc(){
s sc1 = sr.sc("nihao")
}
// 输出数据
// 输入数据类型,输入数据内容
gj.xc(){
s sc2 = sr.sc(1, "nihao")
// 输出文件
//s sc2 = sr.sc(2, "%a.png")
}
关于数据头:
数据头是为了更佳简便的使用套接字,为固定模式和长度;
数据头固定为32位;6位固定标识0-5,1位数据类型6-6,10位数据长度7-16,15位文件后缀17-31
// 数据类型: 1为字符串,2为文件,3为字节数组
// java开头固定字节标识 32, -93, 93, 0, 63, -63
// c#开头固定字节标识 32, 163, 93, 0, 63, 193