关闭

套接字基本归类

79人阅读 评论(0) 收藏 举报
一、socked
int socket(int domain,int type,int protocol);
 用来创建一个套接字,完成本地进程间或者网络通信。
返回值:文件描述符或-1(出错)
参数:
1.通信域:
AF_LOCAL/AF_UNIX: 本地通信域,进程间通信
AF_INET: ipv4的网络通信域
AF_INET6: ipv6的网络通信域
2.通信类型:
SOCK_STREAM: tcp协议需要的参数。
SOCK_DGRAM: udp协议需要指定的参数。
SOCK_RAW: 原始套接字,可以直接操作没有经过内核拆包的数据帧。
3.需要的协议:
一般不用指定,固定为0
二、bind
int bind(int sockfd,struct sockaddr *my_addr,int addrlen)
将一个套接字和地址(IP+PORT)绑定。
返回值:成功0, 失败-1
参数:
1.socket返回的文件描述符
2.通用地址结构体指针。
3.结构体大小。

专门用在网络通信中的地址结构体:
struct sockaddr_in {
unsigned short sin_family;
unsigned short sin_port;
struct in_addr {
unsigned int s_addr;
}sin_addr;
unsigned char sin_zero[8];
};
三、listen
int listen(int sockfd,int backlog)
用来监听链接,完成Listen()调用后,socket 变成了监听socket(listening socket)
返回值:成功 0 ,失败 1
参数:
sockfd:监听链接的套接字
backlog:指定了正在等待链接的队列最大长度
四、accept
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen)
接受链接请求并生成新的套接字
返回值:已建立好的链接的套接字或失败返回-1
参数:
sockfd :监听套接字
addr:对方地址
addrlen:地址长度
五、connect
int connect(int sockfd ,struck sockaddr *serv_addr,int addrlen);
客户端通过系统调用向服务器发送的链接请求
返回值:成功0,失败-1
参数:
sockfd:socket返回的描述符
serv_addr:服务器端的地址信息
addrlen:地址的长度
六、send/recv
ssize_t send/recv(int sockfd,const void *buffer,size_t length,int flags)

发送/接受信息
返回值:成功 实际发送/接受的字节数,失败 -1
参数:buffer:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)
七、sendto/recvfrome
ssize_t sendto(int sockfd,void *message,size_t length,int flags,struct sockaddr *dest_addr,socklen_t dest_len)
这两个函数在使用UDP时代替send/recv
参数:
参数:message:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)
dest_addr发送或接受方的地址
dest_len发送或接受方的地址长度
八、close
int close(int sockfd)
关闭套接字
九、
setsockopt: 设定网络套接字的属性。
参数:
1.sockfd
2.level:
套接字:SOL_SOCKET
传输层:IPPROTO_UDP | IPPROTO_TCP  
网络层:IPPROTO_IP
3.optname:
具体根据level 查看相应的man手册.
4.optval:
操作值,类型大部分是int, 真为使能,假为禁止。
具体参照相应的optname, 参看man 手册。
5.optlen
操作值的大小。
返回值:成功 0, 失败 -1, 并会设置errno。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9103次
    • 积分:193
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:21篇
    • 译文:0篇
    • 评论:2条
    最新评论