Z39.50客户端源代码(C#)
再VB、Delphi时代,实现z39.50客户端有一个yaz vbzoom的工具包,利用第三方开发包我们可以很快的实现。本文介绍如何使用c#实现Z39.50客户端,当然是纯源码方式不依赖第三方。如果您是一个开发人员要求不但熟练C# soket编程,而且要了解Z39.50协议以及基本流程。
建立z39服务器连接
这里只需要z39.50服务器IP地址与端口2个参数。建立soket连接 new TcpClient(this.m_strHostName, this.m_nPort);如果连接失败捕获异常并返回。
Z39.50初始化Initial
这里需要包含的参数就是常见的 用户名、 密码、 组号、认证方式(公开 or 需要密码验证),把这些参数 赋值给 INIT_REQUEST 类并打包发送出去
Z39.50检索Search
这里是关键的一步了,客户端把检索需要的参数封装到SEARCH_REQUEST类并打包发送出去。这里需要注意几个参数:
- PreferredRecordSyntax 数据格式
常见的值有:
//1.2.840.10003.5.1 -- UNIMARC
//1.2.840.10003.5.10 -- MARC21
//1.2.840.10003.5.101 -- SUTRS
//1.2.840.10003.5.109.10 -- XML
- strQuery 检索内容 ,特别注意rpn格式
- Query_type 我们一般采用rpn格式检索,对应的值=1 详细见https://www.loc.gov/z3950/agency/markup/04.html
Query-type and Query. The parameter Query-type identifies the type of query, i.e the syntax of parameter Query. Six types are defined:
Type-0 may be used only when the origin and target have a priori agreement outside of the standard.
Type-1 is the Reverse Polish Notation (RPN) query specified in 3.7.
Type-2 is the ISO8777 type query, specified in ISO 8777.
Type-100 is the Z39.58 type query, specified in ANSI Z39.58.
Type-101 is the extended RPN (ERPN) query, an extension to the type-1 query to allow proximity searching and restriction of result sets by attributes. It is specified in 3.7. Note: The type-101 query is identical to the type-1 query with the following exception: For type-1, proximity and restriction are valid only when version 3 is in force. For type-101, proximity and restriction are valid both for version 3 and version 2 as well. (The definition of the type-101 query is independent of version.)
Type-102 is the Ranked List query, to be defined in a later version of this standard.
如果检索命中了记录,就会返回命中结果数ResultCount
返回命中记录Present
如果命中了记录我们就要取回指定的记录这里参数注意包括
数据格式 PreferredRecordSyntax
元素集名 ElementSetName (F/B) F -- Full (MARC and OPAC records) B -- Brief(MARC records)
结果集名称 ResultSetName默认default
返回数量 PreferedEachCount
以上就是z39.50客户端的主要流程,当然里面很多细节也需要注意,比如编码 因为有外文原版图书著录,必然会涉及到小语种,所以marc编码我们采用的是UTF-8编码存储,避免产生乱码。
如果你想再自己的图书管理软件加上z39.50客户端功能,但编程能力有限,您可以购买源码我们会提供demo 源码帮助说明如何使用。必要的话进行技术指导。
原文链接 石家庄文图软件
Z39.50客户端源代码(C#)相关推荐
- tcp和udp多线程的epoll服务器+客户端源代码 - brucema的个人空间 - 开源中国社区
tcp和udp多线程的epoll服务器+客户端源代码 - brucema的个人空间 - 开源中国社区 tcp和udp多线程的epoll服务器+客户端源代码
- Z39.50 图书信息检索
Z39.50图书信息检索协议 ISO图书信息检索协议 https://www.loc.gov/z3950/agency/ Z39.50相关资源 开放的免费服务器和相关相关程序配置等 http://zo ...
- BT源代码学习心得(十):客户端源代码分析(相关对象一览) -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(十):客户端源代码分析(相关对象一览) Author:wolfenstein(NeverSayNever), BitTorrent/download.py中的Multitorren ...
- BT源代码学习心得(九):客户端源代码分析(图形界面浅析) -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(九):客户端源代码分析(图形界面浅析) author:wolfenstein 客户端将从btdownloadgui.py开始进行分析,这样可以顺便把Python中的GUI编程也看 ...
- BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)
BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略) 发信人: wolfenstein (NeverSayNever), 个人文集 标 题: BT源代码学习心得(十五):客户端源代 ...
- BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)
BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议) 发信人: wolfenstein (NeverSayNever), 个人文集 标 题: BT源代码学习心得(十三):客 ...
- matlab电机算法仿真,MATLAB电机仿真精华50例源代码
[实例简介] MATLAB电机仿真精华50例源代码,包括同步电机,异步电机的仿真模型,和闭环控制等 [实例截图] [核心代码] <MATLAB电机仿真精华50例>源代码 └── <M ...
- matlab自带电机案例,MATLAB电机仿真精华50例,源代码
[实例简介] MATLAB电机仿真精华50例,源代码,MATLAB电机仿真精华50例,源代码,包括直流电机,异步电机,同步电机. [实例截图] [核心代码] MATLAB电机仿真精华50例,源代码 └ ...
- 有服务器端源码和客户端源码,C#远程控制服务器端和客户端源代码
[实例简介] C#远程控制服务器端和客户端源代码 需要改了IP地址就能测试 [实例截图] [核心代码] 客户端和服务器端源代码及程序 ├── ClientFast │ ├── bin │ │ ...
最新文章
- 第44节:Java当中的JVM
- 学习旧岛小程序 (4)封装api 请求
- 智能胖墩机器人_探班新雅CDIE | 智能硬件“奇幻乐园”
- 浅谈bash shell的种类以及linux系统中的profile和bashrc配置文件
- gulp——用自动化构建工具增强你的工作流程
- 【转】字符串和浮点数格式化输出小结
- 2021-08-08 mysql索引
- 2018-2019-2 20175320实验五《网络编程与安全》实验报告
- poj 3666 河南省第七届程序设计D题(山区修路)
- 毕设题目:Matlab语音隐写
- redis 编译/调试
- JQuery each详细用法
- 软件加入使用时间_2020年,加入“midi音乐制作讲堂”内部会员,学音乐制作变得更简单...
- C# BackgroundWorker用法详解
- PDF/CDF 用matlab计算和绘图1
- timeroc 最优最佳截断值特异度(specificity)与灵敏度(sensitivity)
- FeedDemon不能同步google reader的问题
- 更改vs code的界面颜色 vscode修改界面颜色及风格(中文英文界面都有) 手动设置vs code的界面背景颜色
- 某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
- 硕盟SM-H2V1 HDMI转VGA高清转换器
热门文章
- Thingworx自定义扩展开发(二)- Widget Demo Coding
- Alpha版本冲刺(四)
- Java英语单词大全
- java读写word模板_Java操作Word模板插入列表
- (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
- System.BadImageFormatException: 试图加载格式不正确的程序。
- 互联网三大巨头依靠什么武器对垒O2O?
- 国内最牛的Java面试八股,不接受反驳。
- 性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
- 计算机网络实验(三个部分--验证性、Wireshark、CPT)