Windows Socket和Linux Socket编程编程对象和类的区别吗

linux和windows下socket编程的一点区别 - CSDN博客
linux和windows下socket编程的一点区别
本文转自:
(以下假设我们的网络通信采用的TCP协议且采用阻塞模式)
一、linux下的socket编程:
1、客户端执行步骤依次如下:
send()或者recv()
注意的是,connect之前要填充地址结构体,IP地址转换为网络字节序,一般用inet_aton().
2、服务器端:
recv()或者send()
二、windows下的网络编程:
做过windows网络编程的人都知道,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()
send()或者recv()
closesocket()
服务器端:
WSAStartup()
closesocket()
通过以上比较可以发现:linux下的网络编程与windows下采用底层的API类似,但是也有区别:
区别一:windows下需加上WSAStartup()函数
区别二:关闭socket:linux为close(),windows为closesocket()
windows下采用上层的API,一般有CSocket和CAsynSocket这两种类型的类
这种情况以下socket函数一般的首字母大写。而底层的API不管是windows下的还是linux下的socket函数首字母都是小写的。
当然两者还有其他方面的区别和联系,有待以后慢慢学习~!
本文已收录于以下专栏:
相关文章推荐
原文地址:
/dyllove98/p/3151162.html
如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Win...
(以下假设我们的网络通信采用的TCP协议且采用阻塞模式)
一、linux下的socket编程:
1、客户端执行步骤依次如下:
send()或者recv(...
Windows下与Linux下编写socket程序的区别
原文地址:/wyh/item/ec5d1f31c0e650fb2784f4fc
【【Windows】】
【Windows: 头文件的区别】
#includewinsock.h&
#includewinsock2.h&
【Windows: 初始化的区别】
Socket编程windows到Linux代码移植遇到的问题
1、一些常用函数的移植/document/viewdoc/?id=1586
 2、网络--...
“一切皆Socket!”
话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。
——有感于实际编程和开源项目研究。
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览...
最近看了一些网络编程的书籍,一直以来总感觉网络编程神秘莫测,其实网络编程入门还是很容易学的,下面这些代码是我在linux下编写的,已经运行过了,编译之后就可以运行了。有不足之处希望大家多多指出,共同学...
在 socket编程中,对于socket的读写默认都是阻塞的,但有的情况我们需要将其设置为非阻塞,比如做多路复用,或者通过select实现连接超时等功能,将socket设置为非阻塞,在windows和...
假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据...
本文转自:.cn/s/blog_4b029ef30100nxcb.html阻塞socket和非阻塞socket读操作对于阻塞的socket,当socket的接收...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)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 _beginthread --& pthread_create _endthread --& pthread_exit
一、下的socket编程:
1、客户端执行步骤依次如下:
send()或者recv()
注意的是,connect之前要填充地址结构体,IP地址转换为网络字节序,一般用inet_aton().
recv()或者send()
(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()
send()或者recv()
closesocket()
服务器端:
WSAStartup()socket()bind()listen()accpet()send()recv()closesocket()
(ps:windows下CSocket类为同步方式,有阻塞现象;CASyncSocket为异步方式,无阻塞现象。)
通过以上比较可以发现:下的网络编程与windows下采用底层的API类似,但是也有区别:
区别一:windows下需加上WSAStartup()函数
区别二:关闭socket:linux为close(),windows为closesocket()
windows下采用上层的API,一般有CSocket和CAsynSocket这两种类型的类
这种情况以下socket函数一般的首字母大写。而底层的API不管是windows下的还是linux下的socket函数首字母都是小写的。
原文链接:
/lcryby/articles/2227440.html
阅读(...) 评论()linux和windows下socket编程的一点区别 - chinawangfei的专栏 - CSDN博客
linux和windows下socket编程的一点区别
本文转自:
(以下假设我们的网络通信采用的TCP协议且采用阻塞模式)
一、linux下的socket编程:
1、客户端执行步骤依次如下:
send()或者recv()
注意的是,connect之前要填充地址结构体,IP地址转换为网络字节序,一般用inet_aton().
2、服务器端:
recv()或者send()
二、windows下的网络编程:
做过windows网络编程的人都知道,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()
send()或者recv()
closesocket()
服务器端:
WSAStartup()
closesocket()
通过以上比较可以发现:linux下的网络编程与windows下采用底层的API类似,但是也有区别:
区别一:windows下需加上WSAStartup()函数
区别二:关闭socket:linux为close(),windows为closesocket()
windows下采用上层的API,一般有CSocket和CAsynSocket这两种类型的类
这种情况以下socket函数一般的首字母大写。而底层的API不管是windows下的还是linux下的socket函数首字母都是小写的。
当然两者还有其他方面的区别和联系,有待以后慢慢学习~!
我的热门文章拒绝访问 | www. | 百度云加速
请打开cookies.
此网站 (www.) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b9ec17be63c43d1-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 网站建设和编程的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信