linux系统的学习:网络

一、OSI开放系统互连参考模型

1.七层模型

物理层--数据链路层--网络层--传输层--会话层--表示层--应用层

2.四层模型

网络接口层--网络层--传输层--应用层

3.五层模型

物理层--数据链路层--网络层--传输层--应用层

二、socket

专门用来进程网络通信的文件

三、TCP协议

特点:

1)面向连接:通信之前,建立好连接

2)可靠连接(无丢失、无失序、无差错、无重复)

3)字节流传输

四、UDP协议

1)无连接

2)不可靠

3)数据报传输

五、TCP通信模型

六、客户端

1.int socket(int domain, int type, int protocol);

@domain:通信域(本地--AF_UNIX/AF_LOCAL,IPV4--AF_INET,IPV6--AF_INET6);

@type:SOCK_STREAM--流式套接字,SOCK_DGRAM--数据报套接字;

@protocol:协议(tcp,udp,0是默认协议);

返回值:

成功返回socket的文件描述符;失败返回-1&&errno会被设置

2.int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

@sockfd:要连接的文件

@:要通信的服务器地址(IP+端口号),找到一台主机以及这台主机上的进程

@:由sockefd决定,表示addr参数地址的大小

3.bzero(&seraddr,sizeof(seraddr));

清空目标,清空的大小

4.实际用的结构体是struck sockaddr_in

5.htons

将端口号的字节序转为网络字节序

6.inet_addr

将IP的字节序转为网络字节序

cpp 复制代码
int client_connect(void)	
{
	int fd = socket(AF_INET,SOCK_STREAM,0);
	if(fd < 0)
	{
		perror("socket fail");
		return -1;
	}

	printf("fd = %d\n",fd);
	struct sockaddr_in seraddr;
	bzero(&seraddr,sizeof(seraddr));
	seraddr.sin_family = AF_INET;
	seraddr.sin_port = htons(50000);
	seraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	if(connect(fd,(const struct sockaddr*)&seraddr,sizeof(seraddr)) < 0)
	{
		perror("connect fail");
		return -1;
	}
	return fd;
}
相关推荐
YWamy6 小时前
如何降低RTC SDK在复杂网络环境下的运行成本
网络·音视频·实时音视频
北京盛世宏博6 小时前
信创国产化智慧档案馆管库系统:十二防一体化管控平台落地笔记
网络·方案·温湿度·智慧档案馆建设
w-w0w-w7 小时前
SQL注入
网络·数据库·sql
一条泥憨鱼7 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
HideF7 小时前
Linux sudo
linux
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
北京盛世宏博8 小时前
数字孪生 3D 可视化实战:档案十防体系温湿度数据联动与告警定位实现
网络·档案八防·十防
蹊黎8 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
Lynne3099 小时前
EtherCAT网络中,多个节点如何配置才能互不干扰?
网络·网络配置·ethercat·工业网络
视觉小萌新9 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list