千家信息网

网络编程学习

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,========================================================网络编程========================================
千家信息网最后更新 2024年11月24日网络编程学习



========================================================
网络编程
========================================================
1,网络通信:
操作系统进程间的通信UNIX BSD:管道(pipe)、有名管道、信号(signal)
UNIX system V: 消息(message)、共享存取区(shared memory)、信号量(semaphore)
他们都只能进行进程间的通信,因此网间的通信使用的是TCP/IP网络协议,最常用的
编程接口是: UNIX BSD(套接字)SOcket、UNIX SYstem V的TLI(已经淘汰)
即SOcket---->套接字

2,TCP/IP、UDP协议
TCP/IP:传输控制协议,为广域网而设计的。

UDPUser Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。如图:

TCP/IP协议存在于OS中,网络服务通过OS提供,在OS中增加支持TCP/IP的系统调用--Berkeley套接字,如SocketConnectSendRecv

TCP/IP协议族包括运输层、网络层、链路层,而socket所在位置如图,Socket是应用层与TCP/IP协议族通信的中间软件抽象层。

物理结构:应用层---->运输层----->网络层----->链路层(一般四层),细分为:七层结构
SOcket: 是应用层和运输层间通信的抽象层

3,SOcket:
1)服务器:先初始化SOcket----->端口绑定(bind)----->对端口进行监听(listen)---->调用accept组 塞------>等待客户连接
2)客户端:初始化SOcket------->连接服务器(connect)---->连接成功则通信开始(客户端发送数据请 求,服务器接受请求并处理请求;回发数据给客户端,客户端读取数据,关闭连接)初始化

SOcket: int socket() 返回socketfd(描述符)
bind: int bind() 进行客户端ip的绑定(IP地址+端口号)
网络字节序:小端模式(低字节在高位)绑定时必须进行字节序转化

listen: 监听socket listen(int socktefd, int backlog); backlog: socket最大连接个数
connect: connect(int sockfd, const struct sockaddr *add, socklen_t addrlen) : 第二个参数是服务器的ip地址


4,socket创建TCP经过三次握手:请求--->应答---->确认
TCP接收终止:四次握手释放

sercer.c:

#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc ,char **argv)
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in saddr, caddr;
memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(atoi(argv[1]));
saddr.sin_addr.s_addr = INADDR_ANY;
/************定端口号和IP***/
if(bind(sockfd, (struct sockaddr *)&saddr,sizeof(struct sockaddr)) == -1)
printf("bind is error\n");
/************监听**************/
if(listen(sockfd, 5) == -1)
printf("listen is error\n");
printf("LINE : %d\n", __LINE__);
int size = sizeof(struct sockaddr);
/************接受连接请求**************/
printf("connet\n");
int newsockfd = accept(sockfd, (struct sockaddr *)&caddr, &size);
if(newsockfd == -1)
printf("accept is error\n");
printf("connet\n");
close(sockfd);
close(newsockfd);
return 0;
}

client.c:

#include
#include
#include
#include
#include
#include
#include

int main(int argc,char**argv)
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in saddr, caddr;
memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(atoi(argv[2]));
saddr.sin_addr.s_addr = inet_addr(argv[1]);
/************定端口号和IP***/
printf("LINE : %d\n", __LINE__);
int size = sizeof(struct sockaddr);
/************接受连接请求**************/
int ret = connect(sockfd,(struct sockaddr*)&saddr,sizeof(struct sockaddr));
if(ret == -1)
printf("accept is error\n");
perror("connet");
close(sockfd);
return 0;
}




------------------------------------------------------------完成:2015年4月13日

网络 通信 客户 客户端 服务 数据 服务器 口号 套接字 字节 应用层 应用 监听 运输 编程 信号 地址 端口 管道 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全社会要怎样做 华为服务器安全测评证书 r web 服务器 wtl 数据库 网络安全竞赛题库2019 电脑服务器正面接口 小白测评数据库充电2022 无锡机电软件开发方法 服务器到期宝塔下载数据库和文件 以网络安全为主题的班会内容 摩比天线软件开发面试 溢思优控制网络安全 传奇无法连接到服务器 广东网络技术转让哪家便宜 软件开发工具i 广西互联网网络安全工程售后服务 安徽数据网络技术工程 萍乡市云智网络技术有限公司 网络技术选择题怎么做 公安部网络安全保卫局发言 fm数据库编辑器中文版 漏洞 华西网络安全 天津路客游互联网科技 张店工资管理oa软件开发公司 网络安全内容手抄报内容 软件开发公司里女的多吗 你遇到网络安全问题后会怎么做 数据库查询打八折的价格怎么查询 树莓派我的世界服务器教程 我要打开服务器安全怎么打开
0