首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CS 144 Lab Zero -- 可靠的内存字节流

CS 144 Lab Zero -- 可靠的内存字节流 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab 0 对应的PDF: Lab Checkpoint 0: networking warmup...Lab 0 会省去Telnet部分内容。...而读者可以在读取到字节流末尾时,产生EOF标志,不再读取。 所实现的字节流必须支持流量控制,以控制内存的使用。当所使用的缓冲区爆满时,将禁止写入操作。...写入的字节流可能会很长,必须考虑到字节流大于缓冲区大小的情况。即便缓冲区只有1节大小,所实现的程序也必须支持正常的写入读取操作。 在单线程环境下执行,因此不用考虑各类条件竞争问题。...这是在内存中的有序可靠字节流,接下来的实验会让我们在不可靠网络中实现一个这样的可靠字节流,而这便是传输控制协议(Transmission Control Protocol,TCP) 以下是实现的代码:

27920

Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

那么,我们需要思考的是,我们如何将上面的指令,转换为pyserial库进行写操作时(write)所需要的bytes类型。...解决方法 首先,我们需要知道的是,我们首先,需要用字符串构造成上面的指令,然后我们将它转换成bytes。我们可以使用encode()函数将字符串转为bytes格式: ?...例如,我们收到了一串bytes,如果将它转换为明文? ?...如何将十六进制转换为字节流? ? 上述两个方法均可。 总结 由于对上述的知识点不是特别熟悉,所以表述可能有一定的混乱。当初想实现上述几点功能时也费了很大的劲,所以才写在这里供以后后续使用。...Unicode字符 ord(x ) 将一个字符转换为它的整数值 hex(x ) 将一个整数转换为一个十六进制字符串 oct(x ) 将一个整数转换为一个八进制字符串 以上这篇Python 字节流

6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【斯坦福计网CS144】Lab0终结笔记

    Lab0 2.1 实验目的 1 学习如何获取一个网页的内容 2 学习如何实现简单的客户端-服务端的同步与监听 3 学习编写简单的网络程序 4 学习实现内存中的简单可靠字节流传输 2.2...这种被称为流套接的功能提供尽最大努力传输的服务。 2 我们会看到了可靠的无序字节流的抽象是如何在互联网上进行通信的,尽管互联网本身只提供”不可靠的”数据报的服务。...对于读:实现相关的函数有pop_output、read、input_enced、eof、error、buf_size、buf_empty、bytes_writen、bytes_read,需要注意的是Eof...总结 斯坦福大学的CS144实验从Lab0到Lab7涵盖了广泛的网络系统和计算机网络主题。Lab0往往是介绍性的,可能涉及设置实验环境和初步概念。...逐步进入Lab1至Lab7,学生将涉及更深层次的网络协议、编程和系统设计。

    30710

    CS 144 Lab Two -- TCPReceiver

    CS 144 Lab Two -- TCPReceiver 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Two 对应的PDF: Lab Checkpoint 2: the TCP...它们只是代表字节流本身的开始和结束。 字节索引类型一多就容易乱。当前总共有三种索引: 序列号 seqno。...seg.header().syn) index--; // 将TCP载荷数据推入流重组器中: 字节流,该批字节流起始的序列号,当前字节流是否是最后一批数据取决于当前TCP报文的fin标志是否设置了...ByteStream 字节流的字节数, 其值与最后一个重组的字节的相对序列号一致....本部分注意结合前一个lab流重组器进行理解,如果字节流未按序到达,那么bytes_written()返回的还是按序到达的最后一个字节的序号。 对照GBN回退N步协议中的累积确认思路理解。

    24420

    CS 144 Lab Four 收尾 -- 网络交互全流程解析

    CS 144 Lab Four 收尾 -- 网络交互全流程解析 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 本节作为Lab Four的收尾,主要带领各位来看看网络交互的整体流程是怎样的...TCP state machine -- Lab Four实现的 std::optional _tcp{}; //!...// 这对套接可用于本地通信,类似于网络套接的用法,但是不需要通过网络协议栈进行通信,而是直接在内核中完成通信,因此效率更高。...一个作为读取套接(reading socket),另一个作为写入套接(writing socket)。...// 这两个套接之间形成了一条双向的通信通道,任何通过写入套接发送的数据都可以通过读取套接接收,并且反之亦然。

    26030

    Stanford CS144 Lab0.Network WarmUp

    Stanford CS144 Lab0.Network WarmUp 于2022年3月3日2022年3月3日由Sukuna发布 现在我就用这个实验的内容复习一遍计算机网络的知识. 1 Networking...发现内容就是简短的一行 Hello,CS144. 2) 用telnet进行连接,输入telnet cs144.keithw.org http 这一步的做法就是在你的电脑和另一台电脑(域名为cs144....keithw.org)进行一个套接连接,(原文:a reliable byte stream between your computer and anothercomputer),这个时候你的电脑和cs144...由于这个实验是面向初学者的,具体Socket怎么读怎么写我们没有考虑,我们只用调用教授已经写好的写,读操作. 3 缓冲区队列 要求实现一个有序字节流类(in-order byte stream),使之支持读写...这个字节流类似于一个带容量的队列,从一头读,从另一头写。当流中的数据达到容量上限时,便无法再写入新的数据。特别的,写操作被分为了peek和pop两步。

    41920

    Stanford CS144 Lab

    Stanford CS144 Lab 于2023年2月6日2023年2月6日由Sukuna发布 Lab0.Warm Up 1 Networking by hand 这一个部分主要是体验一些基本的应用层协议...发现内容就是简短的一行 Hello,CS144. 2) 用telnet进行连接,输入telnet cs144.keithw.org http 这一步的做法就是在你的电脑和另一台电脑(域名为cs144....keithw.org)进行一个套接连接,(原文:a reliable byte stream between your computer and anothercomputer),这个时候你的电脑和cs144...这个字节流类似于一个带容量的队列,从一头读,从另一头写。当流中的数据达到容量上限时,便无法再写入新的数据。特别的,写操作被分为了peek和pop两步。...图片 Lab1.stitching substrings into a byte stream 该lab要求我们实现一个流重组类,可以将Sender发来的带索引号的字节碎片重组成有序的字节写入到byte_stream

    73320

    JavaSE 基础学习之五 —— IO 操作 (java. io.*)

    节流 文件在 Java 中通过流进行操作,基本可以分为读与写两种操作。在 Java 中,可以把文件流分为字节流和字符流两种。...(5) 关于字节流的总结 由上面的字节流可知,大部分功能强大的字节流,都是通过原始的一次读写一个字节的字节流装饰而来,即功能都由最底层的 read(), write() 向上扩展而来。...这里说到了字符流与字节流的关系,字符流实现了自己的方法,然而却与字节流的方法具有相同的方法签名与参数列表。...4. transient 关键 参照网址:《Java transient 关键使用小记》 我们都知道一个对象只要实现了 Serilizable 接口,这个对象就可以被序列化,java 的这种序列化模式为开发者提供了很多便利...java 的 transient 关键为我们提供了便利,你只需要实现 Serilizable 接口,将不需要序列化的属性前添加关键 transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中

    66820

    Stanford CS144 Lab2.TCP Reciever

    Stanford CS144 Lab2.TCP Reciever 于2022年4月18日2022年4月18日由Sukuna发布 CS144 Lab2 TCP 接收端的实现 绝对序号和相对序号的转换: 在实践中...size_t length_in_sequence_space() const; }; 接着我们来看一看TCP首部:首部的元素主要是: 序号:seqno,占32位,用来标识从发送端到接收端的字节流...\brief number of bytes stored but not yet reassembled size_t unassembled_bytes() const { return _...@} }; 我们知道TCP需要接受一个叫做segment类型的数据,然后存储起来,送入到Lab1已经实现好的reassemble_stream中.并返回适合的ACK....syn_flag){ return; } //推断数据包的序号,序号比较靠近上一个已经接收到的序号,然后塞进我们在Lab1已经写好的流重组器.

    26220

    java基础io流——OutputStream和InputStream的故事(温故知新)

    IO流分类  按照数据流向  输入流 读入数据  输出流 写出数据  按照数据类型  字节流  字符流  什么情况下使用哪种流呢? ...如果数据所在的文件通过windows自带的记事本打开并能读懂里面的内容,就用字符流,其他用字节流。  如果你什么都不知道,就用字节流。 ...字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果。 ...= -1) {     System.out.println(new String(bytes,0,len)); } bis.close(); 注:  成员方法与字节流基本一样,字节缓冲流的作用就是提高输入输出的效率...1) {             fos.write(by);         }         fis.close();         fos.close();     }     //1024节数组复制

    62940

    python基础之socket编程

    例如基于tcp的套接客户端往服务端上传文件,发送时文件内容是按照一段一段的字节流发送的,在接收方看了,根本不知道该文件的字节流从何处开始,在何处结束 所谓粘包问题主要还是因为接收方不知道消息之间的界限...)和recv(1024)及sendall recv里指定的1024意思是从缓存里一次拿出1024个字节的数据 send的字节流是先放入己端缓存,然后由协议控制将缓存内容发往对端,如果待发送的字节流大小大于缓存剩余空间...,这种方式会放大网络延迟带来的性能损耗 九 解决粘包问题比较好的方法 为字节流加上自定义固定长度报头,报头中包含字节流长度,然后一次send到对端,对端在接收时,先从缓存中取出定长的报头,然后再取真实数据...) #先发报头的长度,4个bytes conn.send(head_bytes) #再发报头的字节格式 conn.sendall(文件内容) #然后发真实内容的字节格式 #服务端开始接收 head_len_bytes...=s.recv(4) #先收报头4个bytes,得到报头长度的字节格式 x=struct.unpack('i',head_len_bytes)[0] #提取报头的长度 head_bytes=s.recv

    2.9K100

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券