socket相关

1创建socket

 函数:int socket(int domain,int type,int protocol)

参数说明:domain:告诉系统使用哪个底层协议族    type:指定服务类型,有:SOCK_STREAM(流服务)  和SOCK_UGRAM(数据包服务) tcp:流 udp:数据报

protocol:前两个参数构成的协议集合下,再选择一个具体的协议

  返回结果:本函数成功时返回一个socket文件描述符 失败时返回-1

2命名socket

创建socket时,给他指定了地址族,并未指定使用哪个具体的socket地址,将一个socket与socket地址绑定称为给socket命名,服务器通常要命名socket,而客户端不需要,客户端利用os自动分配的socket地址

int bind(int sockfd,const struct sockaddr* my_addr,socklen_t addrlen);

函数说明:将my-addr所指的socket地址分配给未命名的sockfd,addrlen指出该socket地址的长度。

3监听socket

socket命名后,还不能接受客户连接,如下函数创建一个监听队列以存放待处理的客户连接。

int listen(int sockfd,int backlog) 

sockfd:指定被监听的sock描述符,backlog提示内核监听队列的最大长度,当监听队列的长度超过这个值之后,就不会继续监听客户端连接,客户也将受到错误信息。

4接受连接

从socket监听队列中接受一个连接:int accept(int scokfd,struct sockaddr *addr,socklen_t *addrlen)

函数说明:sockfd是执行过listen系统调用的监听socket,addr指定被接受连接的远端socket地址,其长度由addrlen指定,

成功时返回一个socket,该socket唯一的标识了被接受连接的远端socket,服务器可通过该socket与远端客户端socket进行通信。

5发起连接

    客户端通过connect来与服务器建立连接

int connect(int sockfd,const struct  sockaddr* serv_addr,socklen_t addrlen)

函数说明:sockfd由socket系统调用返回一个socket,serv-addr指定服务器监听的socket地址,addrlen指定这个地址的长度。

一旦成功,客户端可通过读写sockfd来与服务端通信。

6关闭连接

int close(int fd)

关闭fd代表的socket;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值