原创 socket編程原理

socket編程原理 1、問題的引入 1) 普通的I/O操作過程: UNIX系統的I/O命令集,是從Maltics和早期系統中的命令演變出來的,其模式爲打開一讀/寫一關閉(open-write-read-close)。在

原创 Epoll在LT和ET模式下的讀寫方式

在一個非阻塞的socket上調用read/write函數, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK) 從字面上看, 意思是:EAGAIN: 再試一次,EWOULDBLOCK: 如果這

原创 HTTP詳解(3)-http1.0 和http1.1 區別

翻了下HTTP1.1的協議標準RFC2616,下面是看到的一些它跟HTTP1.0的差別。 1. Persistent Connection持久連接        在HTTP1.0中,每對Request/Response都使用

原创 leetcode94. Binary Tree Inorder Traversal

題目描述: Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree [1,null

原创 同步與異步IO、阻塞與非阻塞IO

很多時候我們常常看到同步與異步,阻塞與非阻塞的出現。有的地方直接將同步與阻塞畫上了等號。異步與非阻塞畫上了等號。事實上這是不對的。同步不等於阻塞,而異步也不等於非阻塞。下面就來仔細的看看同步與異步、阻塞與非阻塞的概念差別,及他們的組合應用

原创 LeetCode145. Binary Tree Postorder Traversal

LeetCode145. Binary Tree Postorder Traversal 題目描述: Given a binary tree, return the postorder traversal of its nodes' v

原创 Linux的SOCKET編程詳解

Linux的SOCKET編程詳解 1. 網絡中進程之間如何通信 進 程通信的概念最初來源於單機系統。由於每個進程都在自己的地址範圍內運行,爲保證兩個相互通信的進 程之間既互不干擾又協調一致工作,操作系統爲進程通信提供了相應

原创 HTTP詳解(2)-請求、響應、緩存

1. HTTP請求格式              做過Socket編程的人都知道,當我們設計一個通信協議時,“消息頭/消息體”的分割方式是很常用的,消息頭告訴對方這個消息是幹什麼的,消息體告訴對方怎麼幹。HTTP協議傳輸的消息也是這樣

原创 socket阻塞與非阻塞,同步與異步、I/O模型

1. 概念理解      在進行網絡編程時,我們常常見到同步(Sync)/異步(Async),阻塞(Block)/非阻塞(Unblock)四種調用方式: 同步/異步主要針對C端: 同步:       所謂同步,就是在c端發

原创 socket上傳文件

server.py文件 #!/usr/bin/env python #coding:utf-8 #上傳文件(至服務器) import SocketServer,os class MyServer(SocketServer.BaseReq

原创 epoll與select、poll區別

epoll與select、poll區別 1、相比於select與poll,epoll最大的好處在於它不會隨着監聽fd數目的增長而降低效率。內核中的select與poll的實現是採用輪詢來處理的,輪詢的fd數目越多,自然耗時越多。

原创 TCP/IP詳解--發送ACK和RST的場景

在有以下幾種情景,TCP會把ack包發出去: 1.收到1個包,啓動200ms定時器,等到200ms的定時器到點了(第二個包沒來),於是對這個包的確認ack被髮送。這叫做“延遲發送”; 2.收到1個包,啓動200ms定時器,200ms

原创 論epoll的使用

epoll的事件觸發模式有默認的 level-trigger 模式和通過 EPOLLET 啓用的 edge-trigger 模式兩種。從 epoll

原创 linux網絡編程之socket(八):五種I/O模型和select函數簡介

一、五種I/O模型 1、阻塞I/O 我們在前面所說的I/O模型都是阻塞I/O,即調用recv系統調用,如果沒有數據則阻塞等待,當數據到來則將數據從內核空間(套接口緩衝區)拷貝到用戶空間(recv函數提供的buf),然後rec

原创 LeetCode 86 Partition List

題意描述: Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than