IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> socket网络编程 -> 正文阅读

[网络协议]socket网络编程

网络编程

tcp协议面向连接(字节流),全双工可靠信道,只能点到点

udp协议面向报文,不可靠,支持多对多

端口号作用:通过端口号区分同一主机多个服务

ftp服务器tcp端口号都是21,Telnet服务器tcp端口号23,TFTP(简单文件传输协议)服务器udp端口号69

字节序

字节序:多字节数据在计算机内存中存储或网络传输时各字节存储顺序

little endian小端字节序:将低序字节存储在起始地址

big endian大端字节序:将高序字节存储在起始地址

网络字节序=大端字节序

socket编程起步

套接字(socket)是网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

socket服务器和客户端开发步骤

  1. 创建套接字
  2. 为套接字添加信息(IP和端口号)
  3. 监听网络连接
  4. 监听到客户端接入,接入连接
  5. 数据交互
  6. 关闭套接字,断开连接

Linux提供的api

int socket(int domain,int type,int protocol)

doman:一般为AF_INET(ipv4因特网域)AF_INET6 (ipv6)

type:SOCKET_STREAM(tcp协议) SOCKET_DGRAM(udp)

protpcol:0 根据前两个参数自动选择传输协议

bind(int socketfd, socketaddr *addr, sizeof(sockaddr_in))

1:套接字描述符

2:结构体指针

struct socket_in

{

sa_family_t sin_family; //协议族

in_port_t sin_port; //端口号(低于3000是操作系统使用的,用户用5000-9000)

struct in_addr sin_addr; //ip地址结构体

unsigned char sin_zero[8]; //填充,没有实际意义,只为和socketaddr结构在内存中对齐,这样两者才能互换

}

地址转换api

htons(8988)

主机字节顺序转变成网络字节顺序

int inet_aton(const char* staddr, struct in_addr *addrp)

功能是将一个字符串IP地址转换为一个32位的网络序列IP地址。

char *inet_ntoa(struct in_addr inaddr)

将网络ip地址转化为字符串形式

监听

listen(int sockfd, int backlog)

2:请求队列中最大长度

连接

accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)

2:用来返回已连接的客户端的协议地址

3:客户端地址长度

数据收发

read(),write()

send(),recv()

客户端的connect函数

int connect(int sockfd, const struct aockaddr *addr, socklen_t addrlen)

2:服务器端ip地址和端口号的地址结构指针

3:地址长度常被设为sizeof(struct sockaddr)

cd /usr/include

greap struct sockaddr_in {??*-nir

n显示行号 i不区分大小写 r递归查找

vi linux/in.h +184 打开到184行

man 2 connect

补全的代码

vi ?~/.vim/snippets/c.snippets

71行是一个折叠的代码,zo打开加号,tab #include<stdio.h>

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:33:32  更:2021-09-26 10:33:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/27 1:40:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码