竹笋

首页 » 问答 » 问答 » 一步一步从原理跟我学邮件收取及发送5C语
TUhjnbcbe - 2023/8/23 20:49:00
怎么样预防白癜风 http://m.39.net/pf/a_6466855.html

说到C语言版本的程序,首先要解决的问题就是兼容性.作为20年开发有10多年是在服务端的程序员,我深刻地感受到服务端平台的两极分化之严重,linux派对windows那是超级的不屑一顾:那都是没技术的人才用的,没能力维护linux的人才用windows.与此同时windows派对linux也是嗤之以鼻,我曾经的一位经理就时常不屑对我说,我就不信那几个人写的东西能比公司写的好.奇怪的这两派其实都很能挣钱,BAT什么的都用linux我们就不说了,但股票期货交易这样重要的而且性能要求一样很高的行业内几乎一水的windows+sqlserver恐怕大家就不知道了吧.所以我真不太同意linux性能就比windows高的说法.我觉得形成这种说法的很重要的一个因素是很多高性能的软件没有windows版本,比如nginx长期不推荐在windows下使用,redis下的windows版本居然是微软自己拿过来修改过才能用的.到底真相如何我们就不讨论了,单就为什么这些软件没有windows版本,我觉得一个很重要的原因是C/C++语言在两种平台下的兼容性问题.开源界现在大量的用gcc,而gcc的语法现在和vc的语法差别是越来越大,我过去经常在pc中引用开源代码,有些代码花上一整天的没法在vc中编译通过(印象中最好编译的是apache的代码).我个人觉得既然开源了,还是应该考虑一下vc的兼容性(当然了个人时间是有限的,我写的很多东西也都没有考虑,基本上手上的平台下能编译过去也就算了...).这种兼容性体现在很多方面,第一步选择ide(或者称不上ide的开发工具)时基本上都会要求引入库文件.linux下是so或者a文件,这里就不说了,单只讨论windows下的就有很多区别.传统vc下是要引入lib文件,而现在有大量基于gcc的多种开发工具,它们要引入的是a文件,它们是不通用的(小提示:有些版本的gcc能使用lib文件).所以如果是拿一个vc的示例,那么在gcc系的开发工具中是用不了的.我的解决办法是不用socket的库文件!初学者还没什么,有经验的同学们又要炸锅了:可能吗!没什么的可能的,前面已经说了这些socket函数是操作系统提供的,与开发语言无关,我们其实可以直接使用操作系统的功能,这种直接使用也没什么稀奇的就是直接调用dll文件罢了,delphi的所有socket都是这样使用的.具体的调用方法就是直接调用dll中的函数指针,这在所有的windowsapi开发书籍中都会讲到,一点也不稀奇.本质上各个编译器最后也是要这样调用的,只不过它们按照传统把这种操作弄到了库文件中了而已.我先上代码,大家先别急着看,我后面会讲解,其实也都挺简单的.

(文件名socketplus.c)

//一个方便测试socket程序的小文件,省得老是找liba文件//目前是gcc专用,如果vc要用另外弄一个好了,不要在这上面弄条件编译#ifndef_SOCKET_PLUS_C_#define_SOCKET_PLUS_C_#includestdio.h#includewindows.h#includetime.h#includewinsock.h//#include#includelstring.c//#pragma

1
查看完整版本: 一步一步从原理跟我学邮件收取及发送5C语