再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#)相关推荐

  1. tcp和udp多线程的epoll服务器+客户端源代码 - brucema的个人空间 - 开源中国社区

    tcp和udp多线程的epoll服务器+客户端源代码 - brucema的个人空间 - 开源中国社区 tcp和udp多线程的epoll服务器+客户端源代码

  2. Z39.50 图书信息检索

    Z39.50图书信息检索协议 ISO图书信息检索协议 https://www.loc.gov/z3950/agency/ Z39.50相关资源 开放的免费服务器和相关相关程序配置等 http://zo ...

  3. BT源代码学习心得(十):客户端源代码分析(相关对象一览) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(十):客户端源代码分析(相关对象一览) Author:wolfenstein(NeverSayNever), BitTorrent/download.py中的Multitorren ...

  4. BT源代码学习心得(九):客户端源代码分析(图形界面浅析) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(九):客户端源代码分析(图形界面浅析)  author:wolfenstein 客户端将从btdownloadgui.py开始进行分析,这样可以顺便把Python中的GUI编程也看 ...

  5. BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略)

    BT源代码学习心得(十五):客户端源代码分析(下载过程中的块选取策略) 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(十五):客户端源代 ...

  6. BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)

    BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议) 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(十三):客 ...

  7. matlab电机算法仿真,MATLAB电机仿真精华50例源代码

    [实例简介] MATLAB电机仿真精华50例源代码,包括同步电机,异步电机的仿真模型,和闭环控制等 [实例截图] [核心代码] <MATLAB电机仿真精华50例>源代码 └── <M ...

  8. matlab自带电机案例,MATLAB电机仿真精华50例,源代码

    [实例简介] MATLAB电机仿真精华50例,源代码,MATLAB电机仿真精华50例,源代码,包括直流电机,异步电机,同步电机. [实例截图] [核心代码] MATLAB电机仿真精华50例,源代码 └ ...

  9. 有服务器端源码和客户端源码,C#远程控制服务器端和客户端源代码

    [实例简介] C#远程控制服务器端和客户端源代码 需要改了IP地址就能测试 [实例截图] [核心代码] 客户端和服务器端源代码及程序 ├── ClientFast │   ├── bin │   │  ...

最新文章

  1. 第44节:Java当中的JVM
  2. 学习旧岛小程序 (4)封装api 请求
  3. 智能胖墩机器人_探班新雅CDIE | 智能硬件“奇幻乐园”
  4. 浅谈bash shell的种类以及linux系统中的profile和bashrc配置文件
  5. gulp——用自动化构建工具增强你的工作流程
  6. 【转】字符串和浮点数格式化输出小结
  7. 2021-08-08 mysql索引
  8. 2018-2019-2 20175320实验五《网络编程与安全》实验报告
  9. poj 3666 河南省第七届程序设计D题(山区修路)
  10. 毕设题目:Matlab语音隐写
  11. redis 编译/调试
  12. JQuery each详细用法
  13. 软件加入使用时间_2020年,加入“midi音乐制作讲堂”内部会员,学音乐制作变得更简单...
  14. C# BackgroundWorker用法详解
  15. PDF/CDF 用matlab计算和绘图1
  16. timeroc 最优最佳截断值特异度(specificity)与灵敏度(sensitivity)
  17. FeedDemon不能同步google reader的问题
  18. 更改vs code的界面颜色 vscode修改界面颜色及风格(中文英文界面都有) 手动设置vs code的界面背景颜色
  19. 某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
  20. 硕盟SM-H2V1 HDMI转VGA高清转换器

热门文章

  1. Thingworx自定义扩展开发(二)- Widget Demo Coding
  2. Alpha版本冲刺(四)
  3. Java英语单词大全
  4. java读写word模板_Java操作Word模板插入列表
  5. (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
  6. System.BadImageFormatException: 试图加载格式不正确的程序。
  7. 互联网三大巨头依靠什么武器对垒O2O?
  8. 国内最牛的Java面试八股,不接受反驳。
  9. 性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
  10. 计算机网络实验(三个部分--验证性、Wireshark、CPT)