网络编程/

***问题一:***为什么不用pid来标识,而是用端口号呢?
因为pid每次都在发生改变,而端口号不会发生改变
***问题二:***既然mac地址可以唯一标识,还要用ip地址呢?
因为mac无法表示出物理地址的变换。
***问题三:***为什么要分层?
分层是为了使各层之间相互独立,各自有最适合自己的功能和方法实现。

网络编程的流程:
在这里插入图片描述
服务器端代码:
1.引入头文件
在这里插入图片描述
在这里插入图片描述
网络地址转换方法
头文件netinet/in.h,host to net short将十进制整数
转化为网络编码
2.在这里插入图片描述
创建套接字描述符
在这里插入图片描述
定义一个结构体,里面存放服务器端和客户端的地址,将来用于绑定,host to net short将十进制整数
转化为网络编码。 saddr.sin_addr.s_addr=inet_addr(xxx)//头文件arpa/inet.h自己设定的地址。
3.
在这里插入图片描述
绑定,将linux特有的sockaddr_in转化为通用的sockaddr结构体绑定在sockfd上。
并进行监听。
4.
在这里插入图片描述
step1:循环,可以重复输入,接收。
step2:当接收到一个消息时,定义一个新的描述符,将他绑定在套接字描述符上,后面都对这个c进行操作。(sockfd只相当于一个领路人,领完路后就回去继续领下一个人,而c才是真正对接你的人)
step3:接受描述符
step4:接收到buff中的数据。
客户端代码:
1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
前面和服务器端一样
之后发起链接
4.

在这里插入图片描述
从键盘上得到buff输入,发送给客户端,接收到反馈,关闭描述符。

运行结果:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C/C++ 网络编程是使用 C/C++ 编程语言来实现网络通信的技术。通过网络编程,可以在不同的计算机之间进行数据交换和通信。网络编程主要涉及以下几个方面: 1. 套接字编程:套接字是网络编程的基础,它允许不同计算机之间通过网络进行通信。在 C/C++ 中,我们可以使用 socket 函数来创建套接字,并使用相关的函数来发送和接收数据。 2. TCP/IP 协议:TCP/IP 是网络通信的基本协议,它是一系列规范和协议的集合,用于在 Internet 上的不同计算机之间进行数据传输。C/C++ 网络编程中,我们可以使用相关的库函数和结构体来实现 TCP/IP 协议的功能,包括建立连接、发送和接收数据等。 3. 客户端和服务器:在网络编程中,通常有客户端和服务器两个角色。客户端是发起网络请求的一方,服务器是提供网络服务和响应请求的一方。C/C++ 网络编程可以通过套接字编程和 TCP/IP 协议来实现客户端和服务器之间的通信。 4. 多线程和并发:网络编程中,往往需要同时处理多个客户端请求。 C/C++ 提供了多线程编程的支持,可以使用线程来处理并发的网络请求。多线程编程可以提高网络程序的性能和效率。 总之,C/C++ 网络编程是一种使用 C/C++ 语言进行网络通信的技术。通过掌握套接字编程、TCP/IP 协议、客户端和服务器的概念以及多线程和并发技术,可以实现各种网络应用程序,如聊天程序、文件传输、远程控制等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值