在windows下,如何用纯C语言实现socket网络编程?
4个回答
展开全部
mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。
展开全部
我觉得是你的概念不清:
1、什么是纯C?
Windows下的纯C,我还没有见过。很多都和posix的要求不一致。
2、要是说使用C语言接口,就很简单,Windows API基本上都是C语言兼容接口。
直接使用就可以了。
纯C基本上是理论模型,没办法用。VC、GCC等都是C语言的方言。
1、什么是纯C?
Windows下的纯C,我还没有见过。很多都和posix的要求不一致。
2、要是说使用C语言接口,就很简单,Windows API基本上都是C语言兼容接口。
直接使用就可以了。
纯C基本上是理论模型,没办法用。VC、GCC等都是C语言的方言。
更多追问追答
追问
朋友,我说的是ansi c哈。
追答
你可以只是用ansi C,但是ansi C里面就没有网络模型。
ansi C里面的很多东西都无法真正和很多操作系统结合,类似的包括C89、C99、C11。
为什么不可能是标准C。
我们可以说一个C语言编译器可以编译符合XX标准的C语言程序。但是很少说一个纯C编译器。
比如,C程序里面和硬件打交道很多,大多数C编译器都提供了访问寄存器的方法,可是由于C语言能够运行的平台太多,每种平台的汇编语言又千差万别。C语言标准怎么制定?
你所说的Windows平台本身又不是一个严格的C语言平台。你比如,你可以打开一些头文件比如stdio.h,你应该可以看到类似__stdcall或者__cdecl的字样,这些就是Windows方言特有的东西之一,因为Windows的压栈方式和标准C不一样,标准C使用__cdecl(如果是纯C环境,这个关键字多余),而Windows使用__stdcall(Windows API大多数都是),这种方式在X86的CPU上快一些,但是很多其他类型的CPU不能很好支持。
类似的,有很多Windows特有的语法成分,没有这些成分,仅仅是一个printf都可能无法运行。
综上Windows系统本身依赖于非标准的C语言,而不同的支持Windows的编译器还要再引入一些非标准的语法成分。所以在纯Windows系统下(不是Cygwin或者UNIX兼容层下),没有办法使用"纯C"来完成和操作系统的交互。其实如果是真正纯C的系统,那所有的include都可以不要,自己照着C语言手册输入相应的声明就可以了,但这种系统不实用。
我原来学习的时候就总是觉得计算机是一个3型自动机,不是图灵机。因为图灵机具有无限存储空间,而实际的计算机只可能存在有限的存储空间。如果严格的按照计算理论来推论,计算机充其量是一个3型自动机。但是有人说,你可以写一个程序,当硬盘满了提示更换硬盘,需要前面的那一块,就告诉需要那一块硬盘,这样当然存储空间就大了许多。而且硬盘不够还可以生产,这样算起来也可以称作无限,因为具有动态发展的可能。
其实,实际问题和理论模型往往存在着差异,不要拿着一个固定的模型去套用实际的东西,你有很多问题想不到。要考虑实际问题和模型的差异,以及这些差异存在的必要性。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你要自己实现TCP/IP协议??
追问
不是。只要用C语言都行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用 vc 吧。是不是纯很重要吗??????
追问
用什么库,C语言支持么?
追答
ysdoc
回答的都是VC的内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询