windows socket and linux socket 区别?

http://hi.baidu.com/nicker2010/item/8cc63bce77f11b3899b49810 

 

事实上他们都是bsd socket的实现,只不过 windows和linux的实现有一点点区别。

所以你需要知道在vs上测试的时候 要加一些东西

 

linux和windows下socket编程区别总结(ZZ)

一、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函数首字母都是小写的。
当然两者还有其他方面的区别和联系,有待以后慢慢学习~!

 

当然,你也可以用 socketcc 和 pthreadcc 具体百度 网上有资料

你可能感兴趣的:(cocos2d-x)