本帖最后由 云外归鸟 于 2011-5-13 01:29 编辑
UDP通信时可以取得发送者的IP地址和端口。有两个组件:
一、异步套接字。为用户界面事件型的,接收发送连接都有事件通知。
二、同步套接字。已经封装成了一个TCP服务器,虽然表面是事件通知,但是内部是创建多线程的。因为有人说原来的TCP服务器模块连接数太少,所以编了个组件试试。何为同步套接字?即发送后和接收时都要等待用户一段时间,在这段时间内有用户响应或者直到超时才返回,但因为是工作在辅助线程里,不会影响进程(主线程)。
有详细的例程:下载网页、WEB服务器、UDP聊天的和上传文件
2.2#0版更新
支持静态库编译
2.0#1版更新
1、异步套接字类型增加“置为广播型”、“是否可写”和“是否可读”方法。
2、TCP服务器类型的线程池改用龚辟愚的多线程支持库的源码,支持设置等待线程数、等待时间,堆栈大小。并支持在线程中创建和使用COM对象。可组建高性能的服务器。
3、修改了WEB服务器例子,支持断点续传和中文路径名。
4、增加了网络留言板的例子,做为B/S应用示范。
5、增加用做线程协调的程序段许可证类。
2.0#2版更新
修改了在WIN98ME下线程池不能使用的问题(原线程池代码的BUG,据说还有30%的人还在用WIN98,所还是要继续更新)
2.0#3版更新
同步套接字的“接收”方法增加超时错误码反馈,用于区分接收的数据为空时,是等待超时还是被用户断开连接。
这点很重要,因为这样可以相当有了客户端断开事件
例:
.版本 2
.支持库 eSocket
.判断循环首 (控制) ' 为全局变量,停止服务器时要退出所有线程的循环
数据 = 当前客户.接收 (5)
.如果真 (数据 = { })
.如果 (当前客户.取错误代码 () = #错误代码.WSAETIMEDOUT) ' 原因为超时,而非被用户断开
输出调试文本 (“没收到数据,继续等待...”)
到循环尾 ()
.否则
输出调试文本 (“被用户断开了”)
跳出循环 ()
.如果结束
.如果真结束
输出调试文本 (“外理数据:”, 到文本 (数据))
.判断循环尾 ()
2.0#4版更新
修改同步套接字在客户断开时发送死锁的BUG和修改服务器忙时会暂停的问题
2.1#0版更新
据部分网友说端口有时取出会为负,这是因为易语言没有无符号短整型(端口用的USHORT),所以干脆把所有端口的参数改变整数型的,这样就不会有负数的现象,但是连接或绑定端口实际有效范围只能是1~65535,超过就无效了,也有说是1~32767的。
|