计算机网络高频(四)socket网络编程

1.请说说socket网络编程的步骤。⭐⭐⭐

UDP的网络编程:

客户端的基本流程如下:

  1. 创建UDP套接字(socket):使用socket库的socket()函数创建一个UDP套接字。
  2. 可选地绑定本地地址和端口:使用bind()函数将套接字绑定到一个本地地址和端口。
  3. 发送数据包给服务端:使用sendto()函数将数据包发送给服务端,需要指定目标地址和端口。
  4. 等待接收来自服务端的响应数据包(可选):使用recvfrom()函数从服务端接收数据包,这是一个阻塞操作,直到接收到数据或超时。
  5. 关闭套接字:使用close()函数关闭客户端的套接字。

服务端的基本流程如下:

  1. 创建UDP套接字(socket):使用socket库的socket()函数创建一个UDP套接字。
  2. 将套接字绑定到一个本地地址和端口:使用bind()函数将套接字绑定到一个本地地址和端口,使其可以接收来自客户端的数据包。
  3. 开始监听来自客户端的数据包:使用recvfrom()函数从客户端接收数据包,这是一个阻塞操作,直到接收到数据或超时。
  4. 接收客户端发送的数据包:使用recvfrom()函数接收客户端发送的数据包,并获取客户端的地址和端口。
  5. 可选地处理接收到的数据包并给客户端发送响应数据包:对接收到的数据包进行处理,并使用sendto()函数将响应数据包发送给客户端。
  6. 可选地继续监听并处理其他客户端的请求:使用一个循环来持续监听和处理多个客户端的请求。
  7. 关闭套接字:使用close()函数关闭服务端的套接字

TCP的网络编程:

服务端流程:

  1. 创建服务端的TCP套接字:使用socket()函数,指定地址类型(IPv4或IPv6)、socket类型(如SOCK_STREAM)和协议(如IPPROTO_TCP)。
  2. 绑定套接字到指定的IP地址和端口号:使用bind()函数,传入套接字、本地地址和端口号。
  3. 开始监听连接请求:使用listen()函数,传入套接字和等待连接的最大数量。
  4. 接受来自客户端的连接请求:使用accept()函数,在一个循环中等待客户端连接,并创建新的套接字来与客户端通信。
  5. 与客户端通信:使用新的套接字进行数据传输,如使用read()函数接收客户端发送的数据并使用write()函数发送响应数据给客户端。
  6. 当通信结束时,关闭与客户端的套接字:使用close()函数,传入套接字。

客户端流程:

  1. 创建客户端的TCP套接字:使用socket()函数,指定地址类型(IPv4或IPv6)、socket类型(如SOCK_STREAM)和协议(如IPPROTO_TCP)。
  2. 连接到服务端的IP地址和端口号:使用connect()函数,传入套接字、服务端地址和端口号。
  3. 向服务端发送请求或数据:使用write函数向服务端发送请求或数据。
  4. 等待接收服务端返回的响应数据:使用read()函数接收服务端发送的响应数据。
  5. 处理服务端的响应数据。
  6. 当通信结束时,关闭客户端的套接字:使用close()函数,传入套接字。

2.请说说socket网络编程的接口。⭐⭐

  1. 创建套接字:socket()函数。
  2. 绑定套接字:bind()函数。
  3. 监听连接:listen()函数。
  4. 接受连接:accept()函数。在接受连接后,会返回一个新的套接字用于与客户端通信。
  5. 连接服务器:connect()函数。
  6. 发送数据:使用write()函数,将数据从套接字发送给目标主机。写入的字节数可以通过返回值进行检查。
  7. 接收数据:使用read()函数,从套接字读取数据。读取的字节数可以通过返回值进行检查。
  8. 关闭套接字:close()函数。

3. 什么是Socket⭐

Socket(套接字)是一种在计算机网络中进行通信的抽象概念。它提供了一种机制,使得不同计算机之间能够建立连接并进行数据交换。

在网络通信中,Socket可以被视为一个端点,它通过网络连接与其他应用程序进行通信。Socket可以分为两种类型:服务器端套接字(Server Socket)和客户端套接字(Client Socket)。

4.socket属于网络的那个层面⭐⭐

Socket属于传输层。

  1. Socket是应用程序和网络传输层之间的接口,它提供了一套编程接口,允许应用程序通过传输协议(如TCP或UDP)进行网络通信。通过Socket,应用程序可以创建连接、发送和接收数据。
  2. 具体来说,当应用程序使用TCP协议时,它可以使用Socket接口来建立一个TCP连接,并通过Socket发送和接收可靠的字节流数据。当应用程序使用UDP协议时,它可以使用Socket接口来发送和接收不可靠的数据报。
  3. 由于Socket直接与传输协议交互,并提供了对传输层功能的访问,因此它被认为属于传输层。它将应用程序和网络层之间进行了解耦,使得应用程序可以方便地进行网络通信操作,无需关注底层的网络细节。

5.Socket的常用类⭐⭐

Socket的常用类包括以下几个:

  1. Socket:Socket类是Java中最基本的Socket类,用于客户端与服务器之间的通信。它提供了一套方法,可以用于建立连接、发送和接收数据。
  2. ServerSocket:ServerSocket类用于在服务器端监听指定的端口,接受客户端的连接请求。一旦有客户端连接上来,ServerSocket会返回一个对应的Socket实例,用于与该客户端进行通信。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++/嵌入式面经专栏 文章被收录于专栏

本人2022年毕业于山东大学,目前就职国内某芯片厂。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。

全部评论

相关推荐

2 13 评论
分享
牛客网
牛客企业服务