将Socket应用程序从Unix向Windows移植中应注意的几点问

将Socket应用程序从Unix向Windows移植中应注意的几点问

ID:41009616

大小:20.06 KB

页数:4页

时间:2019-08-13

将Socket应用程序从Unix向Windows移植中应注意的几点问_第1页
将Socket应用程序从Unix向Windows移植中应注意的几点问_第2页
将Socket应用程序从Unix向Windows移植中应注意的几点问_第3页
将Socket应用程序从Unix向Windows移植中应注意的几点问_第4页
资源描述:

《将Socket应用程序从Unix向Windows移植中应注意的几点问》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、将Socket应用程序从Unix向Windows移植中应注意的几点问题套接字(socket)当今已成为最流行的网络通信应用程序接口。套接字最初是由加利福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口,后来它又被移植到DOS与Windows系统,特别是近几年来互联网络在全世界范围内被广泛普及并且增长迅猛,进一步奠定了它在网络通信程序开发领域的主宰地位。跨系统网络互联的呼声在我国也越来越高。近来,在开发的银行与证券联网系统中,我们尝试做了由UnixSockets到WindowsSockets通信应用程序的移植,有所体

2、会,望能将移植过程中应该注意的几点问题与热心于这方面工作的人们共同作以探讨,以期能起到抛砖引玉的作用。修改头文件的定义在UnixSockets应用程序中包含头文件的语句为#include,而在WindowsSockets应用程序中相应语句应为#include。WindowsSockets的实现由两部分组成,即开发组件与运行组件。开发组件是供程序员开发WindowsSockets应用程序使用的,它包括WindowsSockets应用程序接口函数库、头文件以及一些介绍WindowsSo

3、ckets实现的文档,其中头文件winsock.h中包含了WindowsSockets实现所定义的宏、常数值、数据结构和函数调用接口原型。Winsock.h是编写WindowsSockets应用程序必须包含的头文件。WindowsSocketsDLL初始化与资源释放在WindowsSockets的接口函数中,提供了WSAStartup()与WSACleanup()两个函数,用于在程序开始时初始化WindowsSocketsDLL和程序结束时释放WindowsSocketsDLL资源,它们是编写WindowsSockets应用程序时

4、必须使用的两个函数。将套接字的类型由int改为SOCKET在Unix系统中,套接字类型定义为int型,而在Windows系统中,套接字类型被定义为SOCKET型,即unsignedint型。错误码的获取与设置在Unix系统中,获取、设置错误码使用全局变量errno,而在Windows系统中则应将其改为用函数WSAGetLastError()和WSASetLastError()。WindowsSockets为了与多线程环境兼容,提供了两个出错处理函数WSAGetLastError()与WSASetLastError()来获取与设置当

5、前线程的最近错误号,而不再使用Unix系统中的全局变量errno和h_errno。关闭套接字在Unix系统中使用close()函数来关闭套接字,而在Windows系统中则用closesocket()函数。对套接字的控制在Unix系统中,使用ioctl()函数和fcntl()函数实现对套接字的控制,而在Windows系统中则应使用ioctlsocket()函数。getsockopt()和setsockopt()函数的处理在UnixSockets和WindowsSockets中对这两个函数提供的支持不同。在WindowsSockets

6、中getsockopt()与setsockopt()不支持的BerkeleySockets选项有:SO_RCVLOWAT接受低潮标志SO_RCVTIMEO接受超时SO_SNDLOWAT发送低潮标志SO_SNDTIMEO发送超时IP_OPTIONS取得IP头中的选项TCP_MAXSEG取得TCP最大尺寸SO_ACCEPTCONN套接字正在监听SO_ERROR取错误状态并清除SO_TYPE套接字类型使用不支持的选项将返回错误码WSAENOPROTOOPT,它由WSAGetLastError()函数返回。由于提供的支持不同,进行移植时若

7、有必要应修改相应的源程序。使用宏FD_XXX来控制fd_set结构由于WindowsSockets某些函数在接口上虽然与UnixSockets一致,但是它们的内部实现却不一样,例如,在函数select()的参数中,UnixSockets实现套接字集合使用的是位掩码,但在WindowsSockets中却是使用一个SOCKET的数组。虽然套接字的集合仍由fd_set类型表示,但在UnixSockets源文件中直接修改fd_set结构的代码在WindowsSockets环境下将不能正常工作。因此,在进行移植时应将源程序中对结构fd_se

8、t的直接修改改为通过使用FD_XXX宏来修改。应在WindowsSockets程序中尽量使用WSA宏在WindowsSockets的头文件中定义了许多以WSA开头的宏,在程序中使用这些宏,可以大大地增加程序的可读性。例如:errno=WSAGetL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。