计算机网络高频(四)socket网络编程
1.请说说socket网络编程的步骤。⭐⭐⭐
UDP的网络编程:
客户端的基本流程如下:
- 创建UDP套接字(socket):使用socket库的socket()函数创建一个UDP套接字。
- 可选地绑定本地地址和端口:使用bind()函数将套接字绑定到一个本地地址和端口。
- 发送数据包给服务端:使用sendto()函数将数据包发送给服务端,需要指定目标地址和端口。
- 等待接收来自服务端的响应数据包(可选):使用recvfrom()函数从服务端接收数据包,这是一个阻塞操作,直到接收到数据或超时。
- 关闭套接字:使用close()函数关闭客户端的套接字。
服务端的基本流程如下:
- 创建UDP套接字(socket):使用socket库的socket()函数创建一个UDP套接字。
- 将套接字绑定到一个本地地址和端口:使用bind()函数将套接字绑定到一个本地地址和端口,使其可以接收来自客户端的数据包。
- 开始监听来自客户端的数据包:使用recvfrom()函数从客户端接收数据包,这是一个阻塞操作,直到接收到数据或超时。
- 接收客户端发送的数据包:使用recvfrom()函数接收客户端发送的数据包,并获取客户端的地址和端口。
- 可选地处理接收到的数据包并给客户端发送响应数据包:对接收到的数据包进行处理,并使用sendto()函数将响应数据包发送给客户端。
- 可选地继续监听并处理其他客户端的请求:使用一个循环来持续监听和处理多个客户端的请求。
- 关闭套接字:使用close()函数关闭服务端的套接字
TCP的网络编程:
服务端流程:
- 创建服务端的TCP套接字:使用
socket()
函数,指定地址类型(IPv4或IPv6)、socket类型(如SOCK_STREAM)和协议(如IPPROTO_TCP)。 - 绑定套接字到指定的IP地址和端口号:使用
bind()
函数,传入套接字、本地地址和端口号。 - 开始监听连接请求:使用
listen()
函数,传入套接字和等待连接的最大数量。 - 接受来自客户端的连接请求:使用
accept()
函数,在一个循环中等待客户端连接,并创建新的套接字来与客户端通信。 - 与客户端通信:使用新的套接字进行数据传输,如使用
read()
函数接收客户端发送的数据并使用write()
函数发送响应数据给客户端。 - 当通信结束时,关闭与客户端的套接字:使用
close()
函数,传入套接字。
客户端流程:
- 创建客户端的TCP套接字:使用
socket()
函数,指定地址类型(IPv4或IPv6)、socket类型(如SOCK_STREAM)和协议(如IPPROTO_TCP)。 - 连接到服务端的IP地址和端口号:使用
connect()
函数,传入套接字、服务端地址和端口号。 - 向服务端发送请求或数据:使用
write
函数向服务端发送请求或数据。 - 等待接收服务端返回的响应数据:使用
read()
函数接收服务端发送的响应数据。 - 处理服务端的响应数据。
- 当通信结束时,关闭客户端的套接字:使用
close()
函数,传入套接字。
2.请说说socket网络编程的接口。⭐⭐
- 创建套接字:socket()函数。
- 绑定套接字:bind()函数。
- 监听连接:listen()函数。
- 接受连接:accept()函数。在接受连接后,会返回一个新的套接字用于与客户端通信。
- 连接服务器:connect()函数。
- 发送数据:使用write()函数,将数据从套接字发送给目标主机。写入的字节数可以通过返回值进行检查。
- 接收数据:使用read()函数,从套接字读取数据。读取的字节数可以通过返回值进行检查。
- 关闭套接字:close()函数。
3. 什么是Socket⭐
Socket(套接字)是一种在计算机网络中进行通信的抽象概念。它提供了一种机制,使得不同计算机之间能够建立连接并进行数据交换。
在网络通信中,Socket可以被视为一个端点,它通过网络连接与其他应用程序进行通信。Socket可以分为两种类型:服务器端套接字(Server Socket)和客户端套接字(Client Socket)。
4.socket属于网络的那个层面⭐⭐
Socket属于传输层。
- Socket是应用程序和网络传输层之间的接口,它提供了一套编程接口,允许应用程序通过传输协议(如TCP或UDP)进行网络通信。通过Socket,应用程序可以创建连接、发送和接收数据。
- 具体来说,当应用程序使用TCP协议时,它可以使用Socket接口来建立一个TCP连接,并通过Socket发送和接收可靠的字节流数据。当应用程序使用UDP协议时,它可以使用Socket接口来发送和接收不可靠的数据报。
- 由于Socket直接与传输协议交互,并提供了对传输层功能的访问,因此它被认为属于传输层。它将应用程序和网络层之间进行了解耦,使得应用程序可以方便地进行网络通信操作,无需关注底层的网络细节。
5.Socket的常用类⭐⭐
Socket的常用类包括以下几个:
- Socket:Socket类是Java中最基本的Socket类,用于客户端与服务器之间的通信。它提供了一套方法,可以用于建立连接、发送和接收数据。
- ServerSocket:ServerSocket类用于在服务器端监听指定的端口,接受客户端的连接请求。一旦有客户端连接上来,ServerSocket会返回一个对应的Socket实例,用于与该客户端进行通信。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
c++/嵌入式面经专栏 文章被收录于专栏
本人2022年毕业于山东大学,目前就职intel。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。