工学1号馆

home

基本TCP套接字编程

Wu Yudong    October 25, 2016     Linux/Unix   55   

1、socket函数

套接字是通信端点的抽象,实现端对端之间的通信。与应用程序要使用文件描述符访问文件一样,访问套接字需要套接字描述符。任何套接字编程都必须调用socket 函数获得套接字描述符,这样才能对套接字进行操作。以下是该函数的描述:

#include <sys/socket.h> 
int socket(int family, int type, int protocol);

函数功能:创建套接字描述符;

返回值:若成功则返回套接字非负描述符,若出错返回-1;

说明:

socket类似与open对普通文件操作一样,都是返回描述符,后续的操作都是基于该描述符;

family 表示套接字的通信域,不同的取值决定了socket的地址类型,其一般取值如下:

(1)AF_INET         IPv4因特网域

(2)AF_INET6        IPv6因特网域

(3)AF_UNIX         Unix域

(4)AF_ROUTE        路由套接字

(5)AF_KEY          密钥套接字

(6)AF_UNSPEC       未指定

type确定socket的类型,常用类型如下:

(1)SOCK_STREAM     有序、可靠、双向的面向连接字节流套接字

(2)SOCK_DGRAM      长度固定的、无连接的不可靠数据报套接字

(3)SOCK_RAW        原始套接字

(4)SOCK_SEQPACKET  长度固定、有序、可靠的面向连接的有序分组套接字

protocol指定协议,常用取值如下:

(1)0               选择type类型对应的默认协议

(2)IPPROTO_TCP     TCP传输