设置一个用来保存通信错误报告信息的结构。
此功能不适用于 Java 应用程序。
此参数没有缺省值,必须显式设置。
stream_error 字段是类型为 ul_stream_error 的结构。
typedef struct ss_error {
ss_stream_id stream_id;
ss_stream_context stream_context;
ss_error_code stream_error_code;
asa_uint32 system_error_code;
rp_char *error_string;
asa_uint32 error_string_length;
} ss_error, *p_ss_error;此结构在 sserror.h 中定义,后者位于 SQL Anywhere 目录的 h 子目录中。
ul_stream_error 字段如下所示:
stream_id 报告错误的网络层。此枚举列在 sserror.h 中。下面是有具体含义的常量:
| 常量 | 值 |
|---|---|
| STREAM_ID_TCPIP | 0 |
| STREAM_ID_PALM_CONDUIT | 3 |
| STREAM_ID_PALM_SS | 4 |
| STREAM_ID_HTTP | 7 |
| STREAM_ID_HTTPS | 8 |
| STREAM_ID_SECURE | 10 |
| STREAM_ID_CERTICOM | 12 |
| STREAM_ID_JAVA_CERTICOM | 13 |
| STREAM_ID_CERTICOM_SSL | 14 |
| STREAM_ID_CERTICOM_TLS | 15 |
| STREAM_ID_WIRESTRM | 16 |
| STREAM_ID_ACTIVESYNC | 23 |
| STREAM_ID_RSA_TLS | 24 |
| STREAM_ID_JAVA_RSA | 25 |
stream_context 执行的基本网络操作,如打开、读取或写入。有关详细信息,请参见 sserror.h。
stream_error_code 流自身报告的错误。stream_error_code 的类型是 ss_error_code。流错误代码都以 STREAM_ERROR_ 为前缀。例如,写入错误是 STREAM_ERROR_WRITE。
有关错误代码的列表,请参见 MobiLink 通信错误消息。有关错误代码后缀的信息,请参见 sserror.h。
在此版本中,要查找与每个错误号关联的常量,必须清点 sserror.h 中以 DO_STREAM_Error 为前缀的行数。例如,要查找与错误号 10 关联的常量,可以使用 sserror.h 中的第十个 DO_STREAM_ERROR 条目,该条目如下所示:
DO_STREAM_ERROR( WRITE )
因此,与此错误关联的常量是 STREAM_ERROR_WRITE。
system_error_code 系统特定的错误代码。有关错误代码的更多信息,必须查看平台文档。对于 Windows 平台,该文档是 Microsoft 开发人员网络文档。
下面是 Windows 上的常见系统错误:
10048 (WSAADDRINUSE) 地址已经在使用。
10053 (WSAECONNABORTED) 软件导致连接中止。
10054 (WSAECONNRESET) 通信的另一端关闭了套接字。
10060 (WSAETIMEDOUT) 连接超时。
10061 (WSAECONNREFUSED) 连接被拒绝。通常情况下,这表示 MobiLink 服务器没有运行或者没有在指定的端口上侦听。
有关完整列表,请参见
Microsoft Developer Network Web 站点。
error_string 应用程序提供的错误消息。该字符串可能是空的,也可能不是空的。非空的 error_string 还提供 stream_error_code 以外的信息。例如,对于写入错误(错误代码 9),错误字符串是一个显示试图写入的字节数的数字。
按如下所示检查 SQLE_COMMUNICATIONS_ERROR:
Connection conn;
auto ul_synch_info info;
...
conn.InitSynchInfo( &info );
info.stream_error.error_string = error_buff;
info.stream_error.error_string_length =
sizeof( error_buff );
if( !conn.Synchronize( &synch_info ) ){
if( SQLCODE == SQLE_COMMUNICATIONS_ERROR ){
printf( error_buff );
// more error handline hereSQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。