1. 基本的socket的接口函数
(1)创建一个套接字
socket
NAME
socket - create an endpoint for communication
SYNOPSIS
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
socket:用于创建一个套接字,用于网络通信
int socket(int domain, int type, int protocol);
domain:协议族,socket并不仅仅局限于TCP/IP协议,
AF_UNIX, AF_LOCAL 本地通信(unix域协议) unix(7)
AF_INET IPv4 Internet protocols ip(7)
AF_INET6 IPv6 Internet protocols ipv6(7)
...
type:
指定要创建的套接字的类型
SOCK_STREAM :流式套接字 ==》tcp
SOCK_DGRAM :数据报套接字==》udp
protocol:指定具体的应用协议 ,可以指定为0 (不知名的私有应用协议)
返回值:成功返回一个套接字描述符(>0 )
失败返回-1,同时errno被设置
(2)网络地址结构体
socket接口他可以用于ipv4,还可以用于ipv6
不同的协议族,他们的地址
通用地址结构体:所有的socket函数接口中地址参数类型都用struct sockaddr
struct sockaddr //定义在 <linux/socket.h>
{
sa_family_t sa_family; //指定协议族
char sa_data[14]; //
}
internet 协议地址结构体:
ipv4
struct in_addr
{
in_addr_t s_addr;//unsigned int
};
struct sockaddr_in //<netinet/in.h>
{
sa_family_t sin_family; //指定协议族 AF_INET
in_port_t sin_port;//端口号
struct in_addr sin_addr;//IP地址
char sin_zero[]; //为了和其他协议族地址结构体一样的大小
};