套接字基本归类

转载 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。

8 基本UDP套接字编程

典型UDP客户端和服务端结构与代码调用顺序: recvfrom和sendto函数: 验证接收到的响应: 对于UDP,其不像TCP是基于有连接的,这样就有一个问题,se...
  • beginning1126
  • beginning1126
  • 2013年03月29日 17:22
  • 2663

流式套接字编程

1、 2、 3、 4、 5、 6、 7、 8、 9
  • wwkaven
  • wwkaven
  • 2014年10月06日 10:26
  • 1253

《网络编程》基本 UDP 套接字编程

本节是介绍了基于 UDP 套接字的编程。
  • chenhanzhun
  • chenhanzhun
  • 2014年12月14日 19:21
  • 1686

网络编程—套接字基础 & 基本TCP套接字编程-基本套接字函数

套接字基础一个通用套接字地址结构sockaddr:struct sockaddr { unsigned short sa_family; //套接字的协议簇地址类型,AF_XX cha...
  • banana_baba
  • banana_baba
  • 2016年06月13日 19:07
  • 3313

Linux下套接字详解(四)----简单的TCP套接字应用(迭代型)

前面我们已经将了TCP/UDP的基本知识,还说了并发服务器与迭代服务器的区别,我们大致了解大多数TCP服务器是并发的,大多数UDP服务器是迭代的 ,即我们在进行数据传送的时候,往往使用服务器与客户但之...
  • gatieme
  • gatieme
  • 2015年06月07日 21:21
  • 4202

基本UDP套接字编程

转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/08/06/2625276.html 1.概述 使用UDP编写的一些常用应...
  • sclcy
  • sclcy
  • 2016年07月20日 17:22
  • 2581

原始套接字运用

前几天看了看>第一卷,为了加深理解,便写了几个简单的程序,最近好忙,但是又怕忘记前面所学的知识,就粗糙的整理了一下,贴出来,希望能给初学者以指导,同时借助CU的论坛做个备份,呵呵. 内容安排: 1...
  • bestone0213
  • bestone0213
  • 2015年01月21日 09:27
  • 1169

原始套接字学习总结

raw socket(原始套接字)工作原理与规则 原始套接字是一个特殊的套接字类型,它的创建方式跟TCP/UDP创建方法几乎是 一摸一样,例如,通过        int sockfd;     ...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年05月06日 11:24
  • 2675

UNIX网络编程:socket套接字(TCP与UDP)

套接字简介:套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通...
  • Dandelion_gong
  • Dandelion_gong
  • 2016年06月07日 18:46
  • 2435

我的网络编程学习之路——TCP(流)套接字的读和写

1. 函数 read 和 write 流字节套接字(例如TCP套接字)上的read和write函数所表现的行为不同于通常的文件I/O。字节流套接字上调用read或write输入或输出的字节数可能比请求...
  • huangjh2017
  • huangjh2017
  • 2017年06月18日 13:52
  • 402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:套接字基本归类
举报原因:
原因补充:

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