0
点赞
收藏
分享

微信扫一扫

泛型及其使用

草原小黄河 2024-09-12 阅读 15

目录

1.认识socket编程

网络通信的本质

什么是socket编程?

如何进行socket编程?

2.基于UDP的socket编程

服务器端程序编写步骤

1.创建socket

2.将本地信息和网络信息进行绑定

3.接收数据

4.发送数据

客户端程序编写步骤

1.创建socket

2.发送数据

3.接受数据

3.基于TCP的socket编程

服务器端程序编写步骤

1.创建流式套接字

2.绑定本地信息和网络信息

3.将流式套接字设置为监听状态

4.获取连接

5.接收消息

6.发送消息 

客户端程序编写步骤

1.创建套接字

2.发起连接

3.发送消息

4.接收消息


1.认识socket编程

网络通信的本质

介绍socket编程之间,我们先来看看网络通信的本质。

网络通信的本质是什么呢?我们需要明确一点,网络通信需要IP地址和端口号。IP地址在标识网络中唯一的一台主机,端口号标识主机中唯一的一个进程,IP地址加端口号就能标识网络中唯一的一台主机上唯一的一个进程。也就是说,通过IP地址和端口号,就可以找到整个网络中唯一的一个进程。所以网络通信的本质就是进程间通信。

更何况,用户在使用设备进行通信的时候,使用的是设备上的应用服务,应用服务本身就是启动的进程。

什么是socket编程?

网络通信的本质是进程间通信,是一种需要依靠IP地址和端口号的进程间通信,我们把这种基于IP地址和端口号的进程间通信叫做socket通信。socket的中文意思是插座,socket通信的模式类似于插板插座这样的模式,通信双方都必须要知道对方的IP地址和端口号就相当于把插板和插线接通,这样才能进行通信。而基于这种模式进行网络通信的编程就是socket编程。(Socket,通常也称为“套接字”)

如何进行socket编程?

进行网络编程需要依靠网络层的网络传输协议,而网络传输协议是在操作系统内部实现的,用户不能直接访问操作系统内部的代码数据,这个时候,操作系统就要提供系统调用接口供用户使用,从而进行网络编程。这些接口就是socket编程的接口。

2.基于UDP的socket编程

当我们进行网络编程时,往往是基于CS模式(客户端服务器端模式),所以需要编写客户端程序和服务器端程序。

进行socket编程时往往需要包含这些头文件:

服务器端程序编写步骤

1.创建socket

示例代码:

socket函数介绍:

2.将本地信息和网络信息进行绑定

示例代码:

bind函数介绍:

在绑定信息前,需要填充struct sockaddr_in结构,作为参数传递时,需要强转为struct sockaddr 类型。 

3.接收数据

服务器端程序需要先收数据,再发消息进行响应。

示例代码:

recvfrom函数介绍:

4.发送数据

示例代码:

sendto函数介绍:

客户端程序编写步骤

1.创建socket

这一步和服务器端的一样。客户端创建好socket之后,直接就可以进行数据的收和发了。

2.发送数据

当客户端创建socket套接字之后,直接就可以进行数据的收发了;需要明确的是,客户端需要先发送数据,然后接收数据。

示例代码:

这一步和服务器端也是一样的,参考服务器端即可。 

3.接受数据

示例代码:

使用同服务器端。

3.基于TCP的socket编程

服务器端程序编写步骤

1.创建流式套接字

示例代码:

创建流式套接字使用的接口还是socket(),只不过第二个参数需要写成 SOCK_STREAM,这是因为TCP是面向字节流的协议,SOCK_STREAM表明创建流式套接字。

2.绑定本地信息和网络信息

示例代码:

使用上和服务器端的bind完全相同。

3.将流式套接字设置为监听状态

TCP是有连接的协议,客户端和服务器端需要建立连接才能进行通信,将流式套接字设置为监听状态的目的是用于监听连接的状态

示例代码:

 listen函数介绍:

 4.获取连接

listen函数将socket返回的套接字设置为监听套接字之后,监听套接字就会监听连接建立的状态,当有连接建立时,accept函数就会从监听套接字中获取连接,并返回一个新的文件描述符,用于建立该连接的客户端和服务器之间的通信。

服务器只有一个,但是客户端可以有很多,多个客户端和一个服务器之间要进行通信,就要求服务器中需要为每个连接建立用于通信套接字。

 

示例代码:

accept函数介绍:

5.接收消息

因为TCP是面向字节流的协议,所以我们可以使用文件读写接口  read write

示例代码:

read函数介绍:

 

6.发送消息 

代码示例:

write函数介绍:

客户端程序编写步骤

1.创建套接字

客户端中创建套接字使用的还是socket函数,需要注意的是,第二个参数设置为SOCK_STREAM,表明是基于TCP协议进行的通信。

2.发起连接

TCP是有连接的协议,客户端想要和服务器端进行通信时,首先要发起建立连接的请求,服务器端的监听套接字监听到请求建立连接成功之后,accept函数就会从监听套接字中获取连接,并分配一个文件描述符,该文件描述符所关联的文件用于建立连接的双方进行通信。这也就解释了客户端的为什么要设置监听套接字和获取连接的行为。

示例代码:

 connect函数介绍:

3.发送消息

实例代码:

 send函数介绍:

4.接收消息

示例代码:

recv函数介绍:

举报

相关推荐

0 条评论