网络编程----网络编程概述[1]

本文介绍了Windows平台上的SocketAPI版本,包括WinSock1.1和WinSock2.2,并详细阐述了2.2版本新增的功能。此外,还对比了TCP与UDP的特点,并给出了TCPSocket类型的开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Socket Api 版本:

在Windows平台上主要有两个版本的Socket Api函数:

WinSock 1.1 和 WinSock 2.2,2.2版本默认兼容1.1版本,

1.1 winsock.h wsock32.lib winsock.dll

2.2 winsock2.h ws2_32.lib ws2_32.dll

 

2.0版本的Socket比1.1的多了一些高级的功能,如:

多重协议支持:通过SPI接口支持其他协议;

多重命名空间:根据服务与主机名选择协议;

重叠I/O模式:增强I/O吞吐量与提高性能;

分散与聚合:从多个缓冲区发送与接收数据;

有条件接受:有选择性地决定是否接受连接;

套接字共享:多个进程共享一个套接字句柄。

 

一般大家看到的WSA开头的都是WinSock2.2新增的函数。

2.Socket套接字类型:

比较常用的包括:流式套接字(使用TCP),数据报套接字(使用UDP),原始套接字等等。

TCP与UDP各有优缺点:

TCP:面向连接、稳定、需要资源多;

UDP:面向无连接(一般情况下)、不稳定、需要资源少。

 

用手机打电话时面向连接的,用手机发短信是面向无连接的,目前来说网络上比较常用的是TCP类型的套接字。

本教程中也使用TCP Socket类型。

 

TCP与UDP的区别

  1. 基于连接与无连接
  2. 对系统资源的要求(TCP较多,UDP少)
  3. UDP程序结构较简单
  4. 流模式(TCP)与数据报模式(UDP)
    TCP保证数据正确性,UDP可能丢包
    TCP保证数据顺序,UDP不保证

具体编程时的区别

  1. socket()的参数不同
  2. UDP Server不需要调用listen和accept
  3. UDP收发数据用sendto/recvfrom函数
  4. TCP:地址信息在connect/accept时确定
    UDP:在sendto/recvfrom函数中每次均 需指定地址信息
  5. UDP:shutdown函数无效

部分满足以下几点要求时,应该采用UDP 面向数据报方式

  1. 网络数据大多为短消息
  2. 拥有大量Client
  3. 对数据安全性无特殊要求
  4. 网络负担非常重,但对响应速度要求高

 

TCP Socket通信流程:

TCP是面向连接的,UDP是面向无连接的。

3.TCP 类型 Socket 程序开发流程:

TCP服务端:WSASartup、socket、bind、listen、accept、read、write、closesocket、WSACleanup。

TCP客户端:WSASartup、socket、connect、read、write、closesocket、WSACleanup。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值