搭建客户端和服务器,完成客户端和服务器的数据收发

搭建客户端和服务器,完成客户端和服务器的数据收发

TCP/IP四层协议模型和TCP通信

应用层: HTTP(超文件传输协议)、FTP(文件传输协议)、NSF(网络挂载协议)、SSH(远程登录协议)
传输层: TCP协议、UDP协议
网络层: IP协议,ICMP协议、IGMP协议(组播、广播)
物理与网络接口层: 以太网协议、ARP协议(IP -->MAC)、RARP协议(MAC–> IP)、PPP

TCP通信: 面向连接,是一种安全、可靠、有序的传输通信,保证传输数据准确无误不丢失、不失序;
TCP协议详解(史上最全)

应用场景: 用户登录相关、传输重要文件

socket编程预备知识

IP地址
IP地址

端口号
什么是端口号

套接字
本质是一个特殊的按顺序分配的最小的文件描述符;
socket
是一个编程接口
是一种特殊的文件描述符 (everything in Unix is a file)
并不仅限于TCP/IP协议
面向连接 (Transmission Control Protocol - TCP/IP)
无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)
套接字类型:
SOCK_STREAM:流式套接字 用于TCP通信
SOCK_DGRAM:数据报套接字 用于UDP通信
SOCK_RAW:原始套接字 用于访问较低层的协议,比如网络层:IP ICMP…

字节序
数据在内存存储的方式

大端序(网络字节序):高位的数据存放在低位

小端序(主机字节序):高位的数据存放在高位

字节序转换 – 在给端口号赋值时,需要将端口号先转换成网络字节序再赋值

字节序转换相关函数:

​ htons(port) – 将主机字节序转换为网络字节序

​ ntohs(port) – 将网络字节序转换为主机字节序

基于TCP的soket通信
通信流程:

​ 服务器:

​ 客户端:

网络编程相关接口函数

见搭建流程

服务器的搭建

①创建套接字–socket()

②绑定本机的IP地址和端口号–bind()

③设置监听套接字–kisten()

④等待客户端连接–accept()

⑤发送、接收数据–accept()

⑥关闭套接字–close()

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <unistd.h>
#include <arpa/inet.h>

int main(int argc, char argv[])
{
   
	/**************** 1、创建套接字 -- socket *****************/
	int sockfd = socket
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值