(1)网络编程的概念和模式

网络编程的概念和模式

网络编程的本质

  • 使用操作系统提供的网络接口,使得应用程序具备收发网络数据的能力;
  • 网络接口在代码层面是由操作系统提供的函数:
    – 网络编程只是一系列系统函数的花式玩法(即特定领域的C语言程序开发);

网络编程核心概念

  • 协议:为进行数据通信而预定义的数据规则
  • 地址:网络通信中用于标识设备的整数值(4字节的整型值,有时用字符串来表示,比如“192.168.1.2”);
  • 端口号:
    – 设备为收发数据而指定的数值用于标识具体连接;
    – 可理解为:设备中用于网络通信的设备通道
  • 角色:
    – 服务端:等待连接的设备(会将自身的IP/域名地址暴露在网络中,供客户端访问);
    – 客户端:发起连接的设备

网络知识补充

  • 网址、IP地址、URL、域名分别是什么?
    – 网址是网络信息资源的地址(具体到某一网站下某一网页的地址),即URL;
    – 域名是IP地址的别名通过DNS服务器从域名解析出对应的IP地址),多个域名可指向同一个地址;
  • 协议:
    – 协议是一种约定,通信双方在通信前预先定义好的信息处理规则
    – 协议可以基于文本,也可以基于二进制定义;
  • 小端系统:
    – 采用 小端模式(little-endian) 的系统,即:数据低字节放在内存低地址中
  • 大端系统:
    – 采用大端模式(big-endian)的系统,即:数据低字节放在内存高地址中
  • 网络字节序:
    – 网络字节顺序采用大端模式,所以:在小端系统中需要做字节序转换

网络编程模式

start
socket函数:准备网络连接
connect函数:连接远程设备
send/recv函数:收发数据
close函数:关闭连接
end

初探网络编程接口

  • 头文件包含:
    #include <sys/types.h>
    #include <sys/socket.h>
函数原型功能描述
int socket(int domain,int type,int protocal);创建套接字,为网络连接做准备
int connect(int sock,struct sockaddr* addr,socklen_t len);连接指定地址的远程设备
ssize_t send(int fd,const void* buf,size_t n,int flags);发送数据到远程设备
ssize_t recv(int fd,const void* buf,size_t n,int flags);接收远程设备发回的数据
int close(int fd);关闭连接,销毁套接字

网络编程示例

sock = socket(PF_INET,SOCK_STREAM,0);//为网络连接做准备,失败时返回-1
if(sock == -1)
{
	printf("socket error\n");
	return -1;
}
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("47.99.217.175");//指定IP地址
addr.sin_port = htons(80);//指定端口号
if(connect(sock,(struct sockaddr*)&addr,sizeof(addr)) == -1)//连接失败时,返回-1
{
	printf("connect error\n");
	return -1;
}
len = send(sock,tosend,strlen(tosend),0);//连接成功后,开始发送数据,返回值为成功发送数据的长度
printf("send bytes = %d\n",len);
len = recv(sock,buf,sizeof(buf),0);//开始接收数据,返回值为成功接收到数据的长度
printf("receive bytes = %d\n",len);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值