现在的位置: 首页 > 综合 > 正文

socket函数

2013年10月04日 ⁄ 综合 ⁄ 共 941字 ⁄ 字号 评论关闭

socket函数

SOCKET socket(
int af,
int type,
int protocol
); 

af:通信协议的协议族,对于TCP/IP协议族,该参数置PF_INET;

type:流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;

protocol:程序所使用的通信协议;

该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。下面是一个创建流套接字的例子:
struct protoent *ppe;
ppe=getprotobyname("tcp");
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

getprotobyname():依照通讯协定 (protocol) 的名称来获取该通讯协定的其他资料。
  格 式: struct protoent * getprotobyname( const char *name );
  参 数: name                通讯协定名称
  传回值: 成功 - 一指向 struct protoent 的指针

       失败 - NULL  

                          说明:                 利用通讯协定的名称来得知该通讯协定的别名、编号等资料。 

getprotobynumber():依照通讯协定的编号来获取该通讯协定的其他资料。
  格 式: struct protoent * getprotobynumber( int number );
  参 数: number  以 host 排列方式的通讯协定编号
  传回值: 成功 - 一指向 struct protoent 的指针
       失败 - NULL 
  说明: 利用通讯协定的编号来得知该通讯协定的名称、别名等资料。

 

抱歉!评论已关闭.