如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字). socket(套接字):简单来讲,socket就是用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信. ✁ TCP 协议 TCP 协议:是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能.   关键词:三次握手,可靠,基于字节流…
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路>). HTTP/2以前版的头信息(header)是直接传输文本,现在是压缩后传输.原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个,现在可以多个回应一起发送. 服务器推送(server push)是 HTTP/2 协议里面唯…
源:用C语言写一个“事件”的模拟程序 Example.c //定义一个函数指针 func int (*func) (void); //调用该函数相当于触发了事件. //该事件触发后,会检查函数指针func是否为NULL,如果不为NULL,说明该指针已被赋值(相当于该事件被注册). //如果事件已被注册,则执行之. void fireTheEvent() { if(func != NULL) { func(); } } void registerTheEvent(int (*function) (…
网络编程技术-----6.I/O复用实现并发服务器 一.实验要求 服务器:     服务器等待接收客户的连接请求,一旦连接成功则显示客户地址,接着接收客户端的名称并显示:然后接收来自该客户的字符串,对接收的字符串按分组进行加密(分组长度为个人学号,密钥为个人序号,分组不够补0),再将加密后的字符发回客户端:之后继续等待接收该客户的信息,直到客户关闭连接,服务器将每个连接的用户所发来的所有数据存储起来,当连接终止后,服务器将显示客户的名字及相应的所有数据.要求服务器具有同时处理多个客户请求的能力.…
.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .container::before,.container::after { content: " "; display: table } .container::after { clear: both } .container::before,.container::after { content:…
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使用单链表实现一个简单版的队列.单向链表队列是属于非循环队列,同时队列的长度是不受限制的,也就是说添加数据的速度比拉取数据的速度快时,队列的长度是无限增长的.单链队列其本质就是一个链表,只不过是在获取或添加数据的时候跟普通的链表有所区别,队列在获取数据的同时也将该节点删除,并且每次获取数据都是从表头获…
Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但是Express和Koa都是对Node.js原生API的封装,所以其实不借助任何框架,只用原生API我们也能写一个Web服务器出来.本文要讲的就是不借助框架,只用原生API怎么写一个Web服务器.因为在我的计划中,后面会写Express和Koa的源码解析,他们都是使用原生API来实现的.所以本文其实…
刚刚看了node.js文档里的一个小例子,就是用 node.js 写一个web服务器的小例子 上代码 (*^▽^*) //helloworld.js// 使用node.js写一个服务器 const http=require('http'); const hostname='127.0.0.1' const port=3000; const server = http.createServer((req,res)=>{ res.statusCode=200; res.setHeader('Cont…
''' 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发 ''' client import socket import time client = socket.socket() client.connect( ('127.0.0.1', 9527) ) print('启动客户端...') while True: client.send(b'hello') data = client.recv(1024) print(data) time.sleep(1) server ''' 服务…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9612820.html 锲子-- 预备知识优雅的关闭套接字连接: 基于TCP的半关闭 TCP中的断开连接过程比建立连接过程更重要,因为建立连接过程一般不会出现什么大的变数,但断开过程就有可能发生预想不到的情况,因此要准确的掌控. 单方面断开连接带来的问题 Linux的close函数和Windows的closesocket函数是完全断开连接.完全断开是指无法传输数据也不能接收数据.因此,一方这样…