如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
开始学socket编程哈,写笔记吧~这些都是从网上整理+实践来的,嘿嘿#include<sys/types.h>#include<sys/socket.h>函数原型intsocket(intdomain,inttype,intprotocol);应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去封装它,而是由程序自行处理数据包以及协议首部);第三个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。以上摘自百度百科,下面对上面进行补充。domain:指定使用何种的地址类型,比较常用的有:PF_INET,AF_INET:Ipv4网络协议;PF_INET6,AF_INET6:Ipv6网络协议。其中AF表示ADDRESSFAMILY地址族PF表示PROTOCOLFAMILY协议族经测试,linux下:type:SOCK_STREAM:提供面向连接的稳定数据传输,即TCP协议。OOB:在所有数据传送前必须使用connect()来建立连接状态。SOCK_DGRAM:使用不连续不可靠的数据包连接。SOCK_SEQPACKET:提供连续可靠的数据包连接。SOCK_RAW:提供原始网络协议存取。SOCK_RDM:提供可靠的数据包连接。SOCK_PACKET:与网络驱动程序直接通信。protocal:用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0即可。/span下面给出几个使用socket函数的示例:#include<sys/socket.h>//使用IPv4作为协议簇,使用字节流类型,//使用系统针对IPv4与字节流的默认的协议,一般为TCPintsockfd=socket(AF_INET,SOCK_STRAM,0);//使用STCP作为协议intsockfd=socket(AF_INET,SOCK_STRAM,IPPROTO_SCTP);//使用数据报intsockfd=socket(AF_INET,SOCK_DGRAM,0);accept(接受socket连线)相关函数socket,bind,listen,connect表头文件#include<sys/types.h>#include<sys/socket.h>定义函数intaccept(ints,structsockaddr*addr,int*addrlen);函数说明accept()用来接受参数s的socket连线。参数s的socket必需先经bind()、listen()函数处理过,当有连线进来时accept()会返回一个新的socket处理代码,往后的数据传送与读取就是经由新的socket处理,而原来参数s的socket能继续使用accept()来接受新的连线要求。连线成功时,参数addr所指的结构会被系统填入远程主机的地址数据,参数addrlen为scokaddr的结构长度。关于结构sockaddr的定义请参考bind()。返回值成功则返回新的socket处理代码,失败返回-1,错误原因存于errno中。错误代码EBADF参数s非合法socket处理代码。EFAULT参数addr指针指向无法存取的内存空间。ENOTSOCK参数s为一文件描述词,非socket。EOPNOTSUPP指定的socket并非SOCK_STREAM。EPERM防火墙拒绝此连线。ENOBUFS系统的缓冲内存不足。ENOMEM核心内存不足。范例参考listen()。bind(对socket定位)相关函数socket,accept,connect,listen表头文件#include<sys/types.h>#include<sys/socket.h>定义函数intbind(intsockfd,structsockaddr*my_addr,intaddrlen);函数说明bind()用来设置给参数sockfd的soc