当前位置: 首页 > news >正文

质量好网站建设哪家便宜网络营销推广的新趋势

质量好网站建设哪家便宜,网络营销推广的新趋势,毕设做音乐网站,怎样安装微信小程序很惭愧,学了很多年才意识到,噢,原来这两个系统实现一些功能的时候会使用到不同的库,使用不同的函数。 那么,也会延伸出一些问题: 比如,如何实现版本的迁移。一个在Linux上运行的代码如何可以比…

很惭愧,学了很多年才意识到,噢,原来这两个系统实现一些功能的时候会使用到不同的库,使用不同的函数。

那么,也会延伸出一些问题: 

        比如,如何实现版本的迁移。一个在Linux上运行的代码如何可以比较容易地迁移到Windows平台上运行成功呢?

        同时我们已知,编译器得一个功能就是匹配不同的运行平台(这里我特指C++ 这两个语言,因为Java 可以全平台通用【这个涉及JDK ,稍后补充一下】)

一、 Win 和 Linux 的一些库和功能时线上的不同之处 -- API 对比

(一)网络编程方面:

socket相关程序从Windows移植到Linux下需要注意的:

1)头文件
Windows下winsock.h/winsock2.h
Linux下sys/socket.h
错误处理:errno.h

2)初始化
Windows下需要用WSAStartup
Linux下不需要

3)关闭socket
Windows下closesocket(…)
Linux下close(…)

4)类型
Windows下SOCKET
Linux下int
如我用到的一些宏:
#ifdef WIN32
typedef int socklen_t;
typedef int ssize_t;
#endif

#ifdef Linux
typedef int SOCKET;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
#define FALSE 0
#define SOCKET_ERROR (-1)
#endif

5)获取错误码
Windows下getlasterror()/WSAGetLastError()
Linux下errno变量

6)设置非阻塞
Windows下ioctlsocket()
Linux下fcntl() <fcntl.h>

7)send函数最后一个参数
Windows下一般设置为0
Linux下最好设置为MSG_NOSIGNAL,如果不设置,在发送出错后有可 能会导致程序退出。

8)毫秒级时间获取
Windows下GetTickCount()
Linux下gettimeofday()

3、多线程
多线程: (win)process.h --〉(Linux)pthread.h
_beginthreadx --> pthread_create
_endthreadx --> pthread_exit

一、linux下的socket编程:
1、客户端执行步骤依次如下:
socket()
connect()
send()或者recv()
close()
注意的是,connect之前要填充地址结构体,IP地址转换为网络字节序,一般用inet_aton().

2、服务器端:
socket()
bind()
listen()
accpet()
recv()或者send()
close()
(ps:一般通过将send()和recv()的最后一个参数赋为0或者1来区分阻塞与非阻塞,其中0对应阻塞,1对应非阻塞)

二、windows下的网络编程:
做过windows网络编程的人都知道,微软的MFC把复杂的WinSock API函数封装到类里,这使得编写网络应用程序更容易。即windows既提供上层的网络API函数也提供底层的API函数。

1、对于采用上层的API函数而言:若采用csocket类定义一个对象obj的话,那么进行网络编程的步骤如下:

客户端:
obj.Create()
obj.Connect()
obj.Receive()或者obj.Send()
obj.Close()
服务器端:
先调用AfxSocketInit()检测协议栈安装情况
obj.Create()
obj.Listen()
obj.Accpet()
obj.Receive()或者obj.Send()
obj.Close()
2、对于采用底层的API函数而言,步骤如下:
客户端:
WSAStartup()
socket()
connect()
send()或者recv()
closesocket()

服务器端:
WSAStartup()
socket()
bind()
listen()
accpet()
send()
recv()
closesocket()

(ps:windows下CSocket类为同步方式,有阻塞现象;CASyncSocket为异步方式,无阻塞现象。)
通过以上比较可以发现:linux下的网络编程与windows下采用底层的API类似,但是也有区别:

区别一:windows下需加上WSAStartup()函数
区别二:关闭socket:linux为close(),windows为closesocket()
windows下采用上层的API,一般有CSocket和CAsynSocket这两种类型的类
这种情况以下socket函数一般的首字母大写。而底层的API不管是windows下的还是linux下的socket函数首字母都是小写的。

参考:https://www.cnblogs.com/Gale-Tech/p/16089336.html

(二)多线程方面:

    Linux和windows对于多线程的多线程的实现是不同的。总体来说,Linux系统下,是用户级的多线程,也就是说内核是并不清楚多线程的存在的;而windows下则是核心级别的线程,内核可以直接对于线程进行管理。

        具体来说,Linux只是用一个叫做“运行时系统”完成对于多线程的管控。Linux没有一个直接对于多线程可以管理的数据结构,他只能对于多线程上一层的进程,使用PCB记录进程的信息,从而对于进程加以管控。也就是说,Linux内核的角度,线程就是进程,没有专门的线程调度算法,这个线程只是可以和别的进程共享资源而已。


但是对于windows操作系统来说,内核可以直接管控线程,并向应用程序提供api接口。线程的切换是以内核作为支持的,线程是调度的基本单位。我们看windows下的多线程示意图如下:


 

我们能看到每一个线程也能站有一部分独有的资源,这也就是内核独自管理每一个线程的好处。

下面一张图是Linux和windows对于多线程操作的一些函数对比

 参考:https://blog.csdn.net/hanzhen7541/article/details/104526896

二、对于一些需要在Windows环境下运行的代码,MG32 MG64 实现了过渡方案: 

MinGW到底是个什么ghost-CSDN博客

其中,关于 “ MinGW 和 Cygwin 都可以用来跨平台开发,,,,“等对于两者作用实现的比较就可以加深理解的区别

http://www.yayakq.cn/news/650877/

相关文章:

  • 网站建设 代表联系群众企业网址查询
  • 门户网站开发公司排名电子商务网站建设开发
  • 四平网站公司建设工程交易平台
  • 网站后台 灰色网站注册费用需要多钱
  • php完整网站开发案例微信点餐小程序怎么制作
  • 眯眯扑克app哪个公司开发搜索引擎排名优化方案
  • 企业网站主页设计图百度官方优化指南
  • 沈阳做网站直播的公司青州做网站的网络公司
  • 通过网站做外贸谁能给我一个网站
  • 织梦网站模板做网站需要租空间吗
  • 来个手机能看的网站2021上海建设工程安全监理网站
  • 我的网站刚换了一个模板收录很多就是没排名校际凡科平台官网
  • 一个网站做数据分析要多少钱广州网站网站建设
  • 东莞网站推广电话广告创意设计培训
  • 淘宝网网站建设crm系统的销售管理功能包括
  • 校园网站建设 方案论证公司电脑管理软件
  • 网站后天添加文章不显示网站做推广有用
  • 青岛市蓝色经济区建设官方网站网店美工考试试题及答案
  • 旺道seo怎么优化网站免费的oa办公系统排名
  • 请描述网站开发的一般流程北京财优化
  • 网站开发交接协议书手机设计软件拉图
  • 建设婚纱摄影网站的重要性室内设计学校哪些
  • 深圳高品质网站建设服务wordpress手机版怎么注册
  • 需要企业网站开发关键词排名怎样
  • wordpress 站中站ppt模板免费整套下载
  • 公司的企业诚信建设分析seo 合理的网站结构
  • ios手机网站建设手机照片制作成相册
  • 中学网站建设书深圳网络营销培训
  • 个人网站 虚拟主机网站上传后后台进不去
  • 苏宁电器网站建设特点分析小程序开发小程序制作