用法:
// 需要启用线程
工具.线程(){
// 创建服务端
// 输入服务端口,服务端超时限制(指定时间内无新连接则关闭服务器,0为无限制),客户端超时限制(已连接的客户端指定时间内未通信则关闭,0为无限制),是否接收新连接请求
是 tjz = 网络.套接字(6666, 0, 0, true)(so,sr){
// so 服务端对象
// sr 新连接对象
工具.输出(sr.ip() + ":" + sr.dk() + ":" + sr.bjip() + ":" + sr.bjdk())
},(sr,te,mg,bs){
// sr 连接对象
// te 数据类型,0为无数据头字节数组,1为带数据头字符串,2为带数据头文件,3为带数据头字节数组
// mg 数据信息,数据类型为1时值为对应的字符串,数据类型为2时值为文件的后缀
// bs 数据的字节数组
工具.输出(sr + ":" + te + ":" + mg + ":" + bs.length)
}
// 开始,这里线程会被堵塞
tjz.开始()
// 下面的代码将在服务端关闭后执行
工具.输出("服务端已关闭")
}
// 需要启用线程
工具.线程(){
// 创建客户端
// 输入服务器IP,服务端口,超时限制(指定时间内未通信则关闭,0为无限制)
是 tjz = 网络.套接字("192.168.1.100", 6666, 0)(so,sr){
},(sr,te,mg,bs){
// sr 连接对象
// te 数据类型,0为无数据头字节数组,1为带数据头字符串,2为带数据头文件,3为带数据头字节数组
// mg 数据信息,数据类型为1时值为对应的字符串,数据类型为2时值为文件的后缀
// bs 数据的字节数组
工具.输出(sr + ":" + te + ":" + mg + ":" + bs.length)
}
// 开始
tjz.开始()
}
// 更多方法
// 重启
tjz.重启()
// 开始启动或连接
tjz.开始()
// 连接总数
是 ljzs = tjz.连接总数()
// 获取连接列表
是 ljlb = tjz.连接()
// 获取指定序号的连接
是 lj = tjz.连接(0)
// 连接清空
tjz.连接清空()
// 获取当前是否已关闭
是 sfgb = tjz.是否关闭()
// 关闭释放
tjz.关闭()
// 获取服务器对象
是 fwd = tjz.服务器()
// 获取本机的IP
是 bjip = tjz.本机ip()
// 获取本机的端口
是 bjdk = tjz.本机端口()
// 输出数据,返回发送成功数量,如果是服务端则为群发
// 可输出多种类型数据,字符串,字节数组,文件等
工具.线程(){
是 sc1 = tjz.输出("nihao")
}
// 输出数据,需要开线程
工具.线程(){
// 输入数据类型,输入数据内容
是 sc2 = tjz.输出(1, "nihao")
// 输出文件
//s sc2 = tjz.输出(2, "%a.png")
}
// sr 连接对象的方法
// 获取远程连接的IP
是 ip = sr.ip()
// 获取远程连接的端口
是 dk = sr.端口()
// 获取本机的IP
是 bjip = sr.本机ip()
// 获取本机的端口
是 bjdk = sr.本机端口()
// 获取当前是否已关闭
是 sfgb = sr.是否关闭()
// 重启连接
sr.重启()
// 关闭释放
sr.关闭()
// 获取连接socket对象
是 ljdx = sr.连接对象()
// 设置自定义数据
sr.数据("abcd")
// 获取自定义数据
是 数据. = sr.数据()
// 设置自定义数组数据
是 sz = { "abcd", "efg" }
sr.数组数据(sz)
// 获取自定义数组数据
是 szsj = sr.数组数据()
// 输出数据,返回发送成功数量,如果是服务端则为群发
// 可输出多种类型数据,字符串,字节数组,文件等
工具.线程(){
是 sc1 = sr.输出("nihao")
}
// 输出数据
// 输入数据类型,输入数据内容
工具.线程(){
是 sc2 = sr.输出(1, "nihao")
// 输出文件
//s sc2 = sr.输出(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