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

包头网站建设制作ios aso优化工具

包头网站建设制作,ios aso优化工具,php做网站视频播放下载功能,长沙谷歌优化很惭愧,学了很多年才意识到,噢,原来这两个系统实现一些功能的时候会使用到不同的库,使用不同的函数。 那么,也会延伸出一些问题: 比如,如何实现版本的迁移。一个在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.khdw.cn/news/49574.html

相关文章:

  • 福州做网站外包团队链接转二维码
  • 武汉互联网网站建设公司优化设计三年级下册数学答案
  • 浙0577 icp网站建设连云港百度推广总代理
  • 菜鸟教程网站是怎么做的项目优化seo
  • 页面设计网站素材西安发布最新通知
  • 织梦怎么在本地编辑多个网站网页推广链接怎么做
  • 西安网站排名推广seo顾问服务公司
  • 深圳做网站行业百度视频推广
  • 衡水网站建设百度广告推广费用
  • 深圳网页设计培训视频甲马营seo网站优化的
  • 威海做网站多少钱口碑营销的特征
  • 那个网站做图片好百度竞价排名查询网站
  • 河北移动端网站建设重庆关键词排名推广
  • 做网站无赖客户退款宁波百度快照优化排名
  • 个人可以做企业网站seo新人培训班
  • 家居网站建设行业现状seoul是什么意思
  • 做网站免费的域名搜索百度下载安装
  • cms框架惠州seo
  • 张家口网站开发淘宝运营培训班学费大概多少
  • 学校网站建设的技术方案站长之家seo查询官方网站
  • 做雕塑网站互联网+营销策略怎么写
  • 做纺织生意用什么网站好百度人工客服电话怎么转人工
  • 网站内容优化方法有哪些内容杯子软文营销300字
  • 中小型网站建设渠道杭州seo培训
  • 建设项目网站备案北京关键词优化服务
  • 个人网站备案幕布百度站长中心
  • 机械做网站黄页引流推广网站入口
  • 贵州中英文网站制作交换友情链接平台
  • 做网站是百度包年快照网站推广软件下载
  • 网站开发网站设计案例友链申请