当前位置:文档之家› 网络编程常用的协议和函数

网络编程常用的协议和函数

一、需要理解的协议1.PPP:点对点协议(Point to Point Protocol)。

点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。

2.ARP:地址解析协议(address resolution Protocol)。

ARP实现通过IP地址得知其物理地址。

3.RARP:反向地址转换协议(RARP:Reverse Address Resolution Protocol)。

反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其IP地址。

4.IP:IP是英文Internet Protocol(网络之间互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。

5.ICMP:ICMP是(Internet Control Message Protocol)Internet控制报文协议。

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

6.IGMP:Internet Group Management Protocol(Internet组管理协议)。

Internet组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。

7.TCP:Transmission Control Protocol传输控制协议TCP是一种面向连接的、可靠的、基于字节流的传输层(Transport layer)通信协议。

8.UDP:User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

9.HTTP:超文本传送协议(hypertext transport protocol)。

一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

10.DNS:计算机域名系统(Domain Name System或Domain Name Service)的缩写,它是由解析器和域名服务器组成的。

域名系统为Internet上的主机分配域名地址和IP地址。

11.SMTP:(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

12.FTP:(File Transfer Protocol,FTP)是TCP/IP网络上两台计算机传送文件的协议。

13.POP3:(Post Office Protocol3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。

14.TFTP:(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

二、基本套接字编程接口函数1.WSAStartup:应用程序或DLL只能在一次成功的WSAStartup()调用之后才能调用进一步的Windows Sockets API函数.原型:intPASCAL FAR WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);参数:wVersionRequested Windows Sockets API提供的调用方可使用的最高版本号.高位字节指出副版本(修正)号,低位字节指明主版本号.lpWSAData指向WSADATA数据结构的指针,用来接收Windows Sockets 实现的细节返回值:0成功.以下值代表错误:WSASYSNOTREADY指出网络通信依赖的网络子系统还没有准备好.WSAVERNOTSUPPORTED所需的Windows Sockets API的版本未由特定的Windows Sockets实现提供.WSAEINVAL应用程序指出的Windows Sockets版本不被该DLL支持.2.closesocket:关闭一个套接口。

原型:int PASCAL FAR closesocket(SOCKET s);参数:s:一个套接口的描述字。

返回值:0成功.以下值代表错误:WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。

WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。

WSAENOTSOCK:描述字不是一个套接口。

WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。

WSAEINTR:通过一个WSACancelBlockingCall()来取消一个(阻塞的)调用。

WSAEWOULDBLOCK:该套接口设置为非阻塞方式且SO_LINGER设置为非零超时间隔。

3.WSACleanup:中止Winsock2DLL(Ws2_32.dll)的使用。

释放WinSock实现分配给应用程序的系统资源。

原型:int PASCAL FAR WSACleanup(void);参数:无返回值:成功返回04.socket:创建一个能够进行网络通信的套接字。

原型:int socket(int domain,int type,int protocol);参数:第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去封装它,而是由程序自行处理数据包以及协议首部);第三个参数指定应用程序所使用的通信协议。

返回值:成功返回新创建的套接字的描述符,失败返回INVALID_SOCKET。

5.send:经套接字传送消息原型:ssize_t send(int s,const void*msg,size_t len,int flags);参数:第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程式要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。

返回值:成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno中6.recv:从一个套接口接收数据。

原型:int PASCAL FAR recv(SOCKET s,char FAR*buf,int len,int flags);参数:s:一个标识已连接套接口的描述字。

buf:用于接收数据的缓冲区。

len:缓冲区长度。

flags:指定调用方式。

返回值:若无错误发生,recv()返回读入的字节数。

如果连接已中止,返回0。

否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。

7.sendto:将指定字节数的数据发送到指定的终结点。

原型:typedef int(_stdcall*SendTo)(SOCKET sSocket,const char*lpBuffer, DWORD dwLength,int dwFlags,const sockaddr*sinTo,nt dwToLength);参数:s套接字buff待发送数据的缓冲区size缓冲区长度Flags调用方式标志位,一般为0,改变Flags,将会改变Sendto发送的形式addr(可选)指针,指向目的套接字的地址len addr所指地址的长度返回值:实际发送数据的长度。

8.recvfrom:经socket接收数据原型:ssize_t recvfrom(int sockfd,void*buf,int len,unsigned int flags,structsockaddr*from,socket_t*fromlen);参数:s:标识一个已连接套接口的描述字。

buf:接收数据缓冲区。

len:缓冲区长度。

flags:调用操作方式。

from:(可选)指针,指向装有源地址的缓冲区。

fromlen:(可选)指针,指向from缓冲区长度值。

返回值:成功则返回接收到的字符数,失败返回-1.9.connect:建立socket连线原型:int connect(int sockfd,struct sockaddr*serv_addr,int addrlen);参数:参数一:套接字描述符参数二:指向数据机构sockaddr的指针,其中包括目的端口和IP地址参数三:参数二sockaddr的长度,可以通过sizeof(struct sockaddr)获得返回值:成功则返回0,失败返回-1,错误码GetLastError()。

10.accept:在一个套接口接受一个连接。

原型:SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR*addr, int FAR*addrlen);参数:s:套接口描述字,该套接口在listen()后监听连接。

addr:(可选)指针,指向一缓冲区,其中接收为通讯层所知的连接实体的地址。

Addr参数的实际格式由套接口创建时所产生的地址族确定。

addrlen:(可选)指针,指向存有addr地址长度的整形数。

返回值:成功返回一个新的套接字描述符,失败返回-1。

11.listen:将Socket置于侦听状态。

原型:int PASCAL FAR listen(SOCKET s,int backlog);参数:S:用于标识一个已捆绑未连接套接口的描述字。

backlog:等待连接队列的最大长度。

返回值:如无错误发生,listen()返回0。

否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。

12.Bind:将套接字绑定到一个已知的地址上。

原型:int bind(int socket,const struct sockaddr*address,socklen_taddress_len);参数:socket:是一个套接字。

address:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号。

address_len:确定address缓冲区的长度。

返回值:如果函数执行成功,返回值为0,否则为SOCKET_ERROR。

13.inet_addr:将一个点分十进制的IP转换成一个长整数型数INET_ADDR()。

原型:in_addr_t inet_addr(const char*cp);参数:字符串,一个点分十进制的IP地址返回值:如果正确执行将返回一个无符号长整数型数。

相关主题