Winsock网络编程

本文详细介绍了Winsock网络编程的基础知识,包括Winsock的版本、socket类型、网络字节序与主机字节序的转换函数,以及socket接口如socket(), bind(), listen(), accept(), connect(), send(), recv(), sendto()和recvfrom()等的使用。同时,文章讲解了TCP与UDP编程实例,是学习Winsock编程的重要参考资料。" 79114374,7384961,C语言实现基数排序详解,"['排序', 'C语言', '基数排序']
摘要由CSDN通过智能技术生成

Winsock网络编程

1、 Winsock简介

Winsock是Windows系统下网络编程的规范,提供利用socket套接字进行网络编程的相关函数。
Winsock在常见的Windows平台上有两个主要的版本,即Winsock1Winsock2。编写与Winsock1兼容的程序你需要引用头文件WINSOCK.H,如果编写使用Winsock2的程序,则需要引用WINSOCK2.H。此外还有一个MSWSOCK.H头文件,它是专门用来支持在Windows平台上高性能网络程序扩展功能的。使用WINSOCK.H头文件时,同时需要库文件WSOCK32.LIB,使用WINSOCK2.H时,则需要WS2_32.LIB,如果使用MSWSOCK.H中的扩展API,则需要MSWSOCK.LIB。正确引用了头文件,并链接了对应的库文件,你就构建起编写WINSOCK网络程序的环境了。

2、 socket简介

socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
TCP/IP模型
socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。

3、socket 类型

常见的socket有3种类型如下。
(1)流式socket(SOCK_STREAM )
流式套接字提供可靠的、面向连接的通信流;它使用TCP 协议,从而保证了数据传输的正确性和顺序性。
(2)数据报socket(SOCK_DGRAM )
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用UDP协议
(3)原始socket(SOCK_RAW)
原始套接字允许对底层协议如IP或ICMP进行直接访问,功能强大但使用较为不便,主要用于一些协议的开发。
在这里插入图片描述

相关函数

1、网络字节序和主机字节序
网络字节序(Network Byte Order NBO)
采用大端表示,就是数据的高位要存放到低地址。
大多数主机字节序(Host Byte Order HBO)采用小端表示(也有采用大端表示的主机字节序),就是数据的低位放到低地址。
比如无符号整型1338378,的二进制表示为:
数据的高位----------------------------》数据的地位
00000000 00010100 01101100 00001010
所以采用小端表示的主机字节序时,内存中存放的形式为:
低地址----------------------------------------》高地址
00001010 01101100 00010100 00000000
2、IP地址转换—inet_aton()inet_ntoa()inet_addr()
2.1、inet_aton()(ascii to network)
inet_aton()作用是将一个字符串点数格式IP地址输出成NBO地址。

struct sockaddr_in ina;
inet_aton("132.241.5.10",&ina.sin_addr);//inet_aton()是参数指针型

2.2、inet_ntoa()(network to ascii)
inet_ntoa()和inet_aton()作用相反
例如:

printf("%s",inet_ntoa(mysock.sin_addr));
//例如:输出:132.241.5.10
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值