c语言socket函数库 c语言 socket函数

C语言,WIN下如何包含Socket库函数的头文件socket库函数的头文件是
#include winsock.h
附录二Windows Sockets头文件
头文件winsock.h 包含了由Windows Sockets规范所使用的类型和结构定义,常数 , 宏以及函数原型 。Windows Sockets应用程序只要在源文件中包含了winsock.h即可,而不必包含为Berkeley软件的移植而提供的兼容头文件 。
头文件winsock.h 包含了标准Windows头文件windows.h的一些类型和定义 。在Windows 3.0 SDK (Software Developer's Kit)的头文件windows.h 中缺少 #include 保护,因此应用程序必须象包含winsock.h 一样包含windows.h文件,你应该象下面一样在#including winsock.h之前定义符号_INC_WINDOWS:
#include windows.h
#define _INC_WINDOWS
#include winsock.h
SDK for Windows 3.1 及其以后版本的用户不必这样做 。
头文件winsock.h由WindowsSockets规范定义并提供,任何Window Sockets实现都必须和它保持一致 。下面列出了winsock.h的内容:
/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
*
* This header file corresponds to version 1.1 of the Windows Sockets specification.
c语言系统库之socketai参数应指向由getaddrinfo返回的第一个addrinfo结构 。这个连表中的所有结构以及它们指向的任何动态存储空间都被释放掉 。
c语言中关于socket函数的例子函数说明:socket()用来建立一个新的socket, 也就是向系统注册, 通知系统建立一通信端口. 参数domain 指定使用何种的地址类型, 完整的定义在/usr/include/bits/socket.h 内, 底下是常见的协议:
PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 进程通信协议
PF_INET?AF_INET Ipv4 网络协议
PF_INET6/AF_INET6 Ipv6 网络协议
PF_IPX/AF_IPX IPX-Novell 协议
PF_NETLINK/AF_NETLINK 核心用户接口装置
PF_X25/AF_X25 ITU-T X. 25/ISO-8208 协议
PF_AX25/AF_AX25 业余无线AX. 25 协议
PF_ATMPVC/AF_ATMPVC 存取原始 ATM PVCs
PF_APPLETALK/AF_APPLETALK appletalk (DDP)协议
PF_PACKET/AF_PACKET 初级封包接口
参数 type 有下列几种数值:
1、SOCK_STREAM 提供双向连续且可信赖的数据流, 即TCP. 支持 OOB 机制, 在所有数据传送前必须使用connect()来建立连线状态.
2、SOCK_DGRAM 使用不连续不可信赖的数据包连接
3、SOCK_SEQPACKET 提供连续可信赖的数据包连接
4、SOCK_RAW 提供原始网络协议存取
5、SOCK_RDM 提供可信赖的数据包连接
6、SOCK_PACKET 提供和网络驱动程序直接通信. protocol 用来指定socket 所使用的传输协议编号, 通常此参考不用管它, 设为0 即可.
返回值:成功则返回socket 处理代码, 失败返回-1.
错误代码:
1、EPROTONOSUPPORT 参数domain 指定的类型不支持参数type 或protocol 指定的协议
2、ENFILE 核心内存不足, 无法建立新的socket 结构
3、EMFILE 进程文件表溢出, 无法再建立新的socket
4、EACCESS 权限不足, 无法建立type 或protocol 指定的协议
5、ENOBUFS/ENOMEM 内存不足
6、EINVAL 参数domain/type/protocol 不合法
C语言能不能只用标准库写一个socket库?不可能不受操作系统影响
网络协议都已经内置到操作系统里面c语言socket函数库了c语言socket函数库,属于操作系统的一部分
建议c语言socket函数库你换个其c语言socket函数库他的方向试试,比如gui库
c语言socket编程read()函数问题write/read , 是关于写特定的文件描述符使用的比较底层的系统调用,
sendto/recvfrom适用于用udp(数据包)方式的套接字中使用的,
其他的没见过,我是学linux编程的
Windows下的socket和Linux下的socket是不一样的,我没有查到sendmsg/recvmsg这个方法,上面的链接是一个类似的函数,它和send/recv 的区别是 , 这个函数可以发送socket控制信息,看API就知道 。

推荐阅读