网络服务器,客户端初步搭建---精简版

网络三要素:

  1. IP地址(类似于寄快递时的地址)用来查找电脑

域名à绑定一个IP地址

  1. 端口号(类似于寄快递时的手机号,来完善对某个目标的信息)用来查找这台电脑上的应用程序
  2. 通信协议

TCP

1.创建连接的时候会验证通信双方是否在线(对方在线就发,不在线就不发)

2.传输的介质、流式传输 IO流

3.传输大小不限制,0~无限字节(只被网络和内存卡限制)

UDP

1.不需要验证是否在线(想发就发)

2.报文包式传输

3.一个报文包64KB 584字节

UDP优点:速度更快

搭建服务器流程:

创建套接字--->绑定IP给结构体--->将结构体和套接字绑定(客户端connect,服务器bind)

--->绑定成功后通过read和write函数进行数据交互

套接字(Socket)是计算机网络中用于实现进程间通信或跨网络通信的一种机制。它是一种抽象的概念,代表着网络中的一个通信端点。

套接字可以用于不同的通信方式,包括:

本地进程间通信:套接字可以用于在同一台计算机上的不同进程之间进行通信,这称为本地套接字(Unix Domain Socket)。

跨网络通信:套接字也可以用于在网络上不同计算机之间进行通信,这称为网络套接字(Network Socket)。

套接字通常用于实现不同网络协议的通信,如TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP套接字提供面向连接的、可靠的、基于流的通信,而UDP套接字提供无连接的、不可靠的、基于数据报的通信。

简单来说,套接字类似于网络通信间的连接点,两个端之间要实现通信,套接字就承担了桥梁的作用

  1. 调用socket函数创建套接字,并接收其返回值,返回值小于0说明失败

AF_INET: 这是一个常量,表示使用IPv4地址族。在套接字编程中,AF_INET常常用于指定IPv4地址族。

SOCK_STREAM: 这是一个常量,表示创建一个面向连接的、可靠的、基于流的传输套接字。在套接字编程中,SOCK_STREAM常常用于指定TCP协议。

0: 这是协议参数,通常设置为0以让操作系统自动选择适合给定域和类型的协议。

  1. 利用bind函数绑定IP地址和端口号,返回值小于0说明失败

struct sockaddr_in addr;

addr.sin_port = htons(10001);: 这一行代码设置了端口号为10001,并通过 htons() 函数将端口号转换为网络字节序(Big-Endian),因为网络字节序通常是大端字节序。这样做是因为网络协议中要求端口号使用网络字节序表示。

结构体中有可以容纳IP的属性,这样可以把之前创建的套接字和IP绑定起来

第一个参数:套接字描述符(socket的函数返回值)

第二个参数:将容纳了IP地址等属性的sockaddr_in类型结构体转换成sockaddr类型,注意要在取地址之后再转换

第三个参数是sockaddr_in类型结构体的字节数大小

  1. 调用listen设置监听,返回值小于0说明监听失败,返回0说明成功

Listen函数是将之前创建的套接字转换为监听套接字,并指定等待连接队列的最大长度为10。

第一个参数:套接字描述符

第二个参数:指定等待连接队列最大长度

  1. 利用accpet函数在服务器端等待客户端连接服务器

这边我们是从之前的监听套接字接收到了客户端的请求,然后我们通过accept函数将这个套接字转换为新的套接字,并利用这个新的套接字和客户端进行数据交互

搭建服务器流程

  1. 创建套接字
  2. 初始化sockaddr_in的一个结构体(主要是把服务器的IP绑定到这个结构体上,并利用connect函数进行客户端和服务端的绑定)并用connect函数把套接字和结构体绑定起来
  3. 使用write函数对套接字进行操作

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值