linux网络编程(1)Socket套接字

socket(套接字)是一种通信机制,它包含一整套的调用接口和数据结构的定义,它给应用程序提供了使用如TCP/UDP等网络协议进行网络通信的手段。

Linux中的网络编程通过socket接口实现,socket是一种特殊的IO,提供对应的文件描述符。一个完整的socket都有一个相关描述{协议, 本地地址, 本地端口, 远程地址, 远程端口};

创建socket

#include <sys/socket.h>
#include <sys/types.h>
int socket(int domain, int type, int protocal)

返回:成功返回文件描述符,出错返回-1

描述:socket创建在内核中,若创建成功返回内核文件描述表中的socket描述符(实际上socket套接字就是一个结构体,创建socket就是在内核中创建了一个socket结构体)

参数:

domain: 

AF_INET IPV4因特网,AF_INET6 IPV6因特网,AF_UNIX 本地套接字,AF_UNPEC 未指定

type: 

 SOCK_STREAM,流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。
 SOCK_DGRAM,数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。
SOCK_RAW,原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。
SOCK_SEQPACKET ,长度固定、有序、可靠的面向链接报文传递

protocal: 

通常为0,表示按给定的域和套接字类型选择默认协议

socket系统调用的示意图:



猜你喜欢

转载自blog.csdn.net/weicao1990/article/details/80674986