MFC socket文档笔记 --socket

2 篇文章 0 订阅

socket:

1.socket一个socket描述符

2.默认创建一个异步的socket

3.同步socketWSAsocket函数创建

4.所有同步操作的socket操作函数(WSASend, WSARecv,WSASendTo, WSARecvFrom, and WSAIoctl)都可以使用异步socket 



bind:

1,bind 需要被使用在一个尚未被连接的socket上

2,socket函数为socket提供一个命名空间,而bind函数则为socket提供一个具体的名字

3,函数的第二个参数SOCKADDR结构并不被完全解读,这里只是为了兼容Socket1.1但是SOCKADDR结构指针只想的内存块的前两个字节(也就是sa_family)必须制定协议族,否则会报WSAEFAULT错

4,如果应用程序不关心地址分配可以将ADDR_ANY分配给sa_data

5,TCP/IP在执行bind函数后可以使用getsockname可以获取服务提供者的IP 和端口信息,对于ADDR_ANY执行getsockname并没有必要提供地址信息在正式建立连接前



listen:

建立一个连接,一个socket首先要创建一个socket,然后还要使用bind将socket绑定在一个本地地址上,在完成这些操作后,listen将发送来的连接请求管理起来

1,listen的主要作用是用队列的形式管理连接请求,如果发送的连接请求数量大于设定的最大请求数量,客户端会收到WSAECONNREFUSED

2,如果设定的socket描述符无效,listen函数依然会尝试执行,当socket恢复有效或者当执行listen,accept时,请求队列会重新被填充

3,可以重新调用listen用于刷新请求队列,如果新的请求队列的最大容量比原有的小,可能会导致已有链接掉线


accept:

1,accept从指定socket的连接等待队列的第一个链接,同时创建一个新的socket,创建的socket和参数中的socket具有相同的属性。

2,同步accpet会阻塞当前线程,直到一个新的链接请求到来,异步会返回一个错误

3,accept执行成功会返回一个新的socket的句柄,返回的socket不能被用来调用accept




connect:

1,connect用于建立连接,如果用于建立连接的socket尚未绑定,系统会完成绑定操作

2,TCP形式通信,如果connect成功调用,可以用send,recv来发送接收数据

3,UDP形式通信,connect 只是建立一个默认的目的地地址,所有非默认地址的数据报都被忽略

4,如果连接中断或者建立连接失败socket需要被抛弃,或者重建

5,如果是连接到广播地址,需要调用setsockopt设定为SO_BROADCAST















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值