套接字基本归类

转载 2016年08月31日 10:50:55
一、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。

相关文章推荐

基本TCP套接字总结

网络编程之前也写过一些小程序,但是都是照猫画虎.按照书中实例,一个一个照抄的.虽然程序都有本身的结构,照抄运行没有问题.但是总觉得是门外汉.喜欢金庸的人,我想不止看电视剧那么肤浅,都会看看原著小说.同...

java TCP/IP Socket编程-----基本套接字-----获取本机地址-----笔记3

概述: 开始上硬菜的了,现在我们可以学习如何编写自己的套接字应用程序了。我们首先通过使用InetAddress类和SocketAddress类来示范Java应用程序如何识别网络主机。然后,举了一个使...

基本套接字:UDP 客户端/服务器端

UDP客户端   UDP客户端首先向被动等待联系的服务器端发送一个数据报文。一个典型的UDP客户端主要执行以下三步:  1. 创建一个DatagramSocket实例,可以选择对本地地址和端口号...
  • undoner
  • undoner
  • 2012年12月18日 17:55
  • 1428

初遇SOCKET套接字(网络基本概念)

1、TCP/IP体系结构     TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP包括以下协议: IP: 网间协议(Int...

apue和unp的学习之旅04——基本套接字api

//------------------------------------------socket 函数--------------------------------------- #includ...

TCP流式套接字的基本编程

面向连接的客户/服务器程序工作模型 服务器端程序 #include  WINSOCK2.H>  #pragma comment( lib, "ws2_32" )  #inclu...
  • qqMCY
  • qqMCY
  • 2013年06月30日 19:38
  • 1071

【Java TCP/IP Soket】— TCP套接字的基本使用

【Java TCP/IP Soket】— TCP套接字的基本使用
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:套接字基本归类
举报原因:
原因补充:

(最多只允许输入30个字)