项目开发日报表
项目名称 | 苏嵌实训-嵌入式 linux C 第8天 |
---|---|
今日进度以及任务 | 计算机网络基本知识,Linux下TCP连接 |
任务完成情况 | 课内题目已完成 |
开发中出现的问题汇总 | 没有设置与虚拟机一致的ip地址时,TCP连接会显示无法连接网络 |
未解决问题 | |
开发收获 | 计算机网络基本知识回顾,学习了TCP连接 |
其他 |
课堂笔记
网络通信
-
进程间通信解决的事本机内通信
-
网络通信解决的是任意不同机器通信
-
实现网络通信
通信设备:
网卡:PC机自带
路由器、交换机,光纤、电缆、基站
通信协议
操作系统自带协议栈 ——Linux的特点:丰富的网络协议
裸机开发需要独立的协议栈
简单网络通信只需要学会使用系统API -
互斥锁
pthread_mutex_t mutex;全局变量
pthread_mutex_init(&mutex,NULL); 初始化锁
pthread_mutex_lock(&mutex); 上锁
pthread_mutex_unlock(&mutex); 解锁
网络编程: -
Linux四层模型
应用层
传输层
网际层
网络接口 -
OSI七层网络模型:
物理层
数据链路层
网络层 IP\ICMP\ARP\RARP
传输层 TCP\UDP
会话层SMTP
表示层 TELNET\SNMP
应用层TFTP\FTP\NFS\WAIS -
分层好处:灵活性好,易于实现和维护
-
子网掩码:决定一个网段的大小
-
DNS:把域名解析成IP地址,或把IP地址解析为域名。
端口号的作用
通过IP地址找到指定的机器,通过端口号可以找到机器上与之通信的应用软件。
- 源端口号和目的端口号要保持一致
- IP找主机,端口号找应用程序TCP
- 端口号 21:FTP 22:Ssh
TCP连接服务端
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 33333
int main()
{
int sockfd;
int cfd;
int c_len;
char buffer[1024];
struct sockaddr_in s_addr;
struct sockaddr_in c_addr;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) <