上次的socket还有很多坑。但是总是在不断的改进的。下面就来看看一个升级版的内容

import socket

server = socket.socket()

ip_port = ("192.168.111.1",8001)

server.bind(ip_port)

server.listen(5)#这里的参数是表示能监听5个,但是由第一个一直可以占线,第六个都会报错!

print("1111")

conn,addr = server.accept()#其实可以理解为一个阻塞的方式.一直可以等待着客户端的链接

print("222")

print(conn)

pirnt(">>>>"addr)

while True:
from_client_data = conn.recv(1024)#这里的1024就相当于一个容器大小,无论来多大的信息,都使用这个大小的容器来装.
from_client_data = from_client_data.decode("utf8")
print(from_client_data)
if from_client_data == "bye"
break
server_input = input(">>>":)
conn.send(server_input.encode("utf8"))
if server_input == "bye"
break
conn.close()
server.close()
import socket
import time client = socket.socket() server_ip_port=("192.168.111.1",8001) client.connect(server_ip_port) while True: client_input = input ("客户端说") client.send(client_input.encode("utf8")) if client_input == "bye"
break
from_server_data = client.recv(1024) print("来自服务器的消息",from_server_data.decode("utf8")) if from_server_data.decode("ut8") == "bye":
break client.close1()

这里算是一个小小的复习内容,重点内容是下面的ISO七层模型

最简单的一个版本就是四层协议:应用层 传输层 网络层 网络接口层

升级版的一个版本就是五层协议: 应用层 传输层 网络层 数据链路层 物理层

最流行的一个复杂版七层协议:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层(应表会传网数物)

简单表述各层作用:

物理层:就是接入网络,放出0或1这样不同内容的高低电压.

数据链路层:接收方怎么理解这不断传输过来的0011呢?各自有各自的解释.后来统一用以太网分组方式来进行分组.

一组电信号就是一个 数据包,还有人把这样的内容叫做""帧""

一般而言,由头部和数据组成,在头部中就包含了目标位置的mac地址,当然也是有自己的mac地址的!(最短有46个字节,最长会有1500字节)

网络层 :

因为有广播风暴的存在,所以就有了IP的产生.

IP协议是规定的网络地址的协议.经过网络层也会有IP头.这个IP头会有目标的IP头部,当然也会有发送者的IP

这个里就有一个ARP协议的作用,ARP就是根据IP来获取目标主机的mac地址

传输层:

进入传输层的主要功能就是获得这个主机上的应用程序的端口!就是为了能够正常的启动程序用的!

这里面可以有两种数据传输方式上的选择.一种是tcp协议.这个协议是非常的安全的,不会有信息的丢失.建立时候有三次握手,断开的时候有四次挥手.

最后一层就是应用层,这一层是和用户最近的一层.内容多,以后会陆续整理出来

网络编程一定要看过的socket另一座大山的更多相关文章

  1. 网络编程一定要看过的socket大山

    python已经可以做很多的东西了.但是要想要和别人互联互通就会涉及到一个关键的模块socket!值得一提的是,其实socket不是python独创的一种模块,而是任何语言都会有的一个部分!自己的程序 ...

  2. Linux下TCP网络编程与基于Windows下C#socket编程间通信

    一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...

  3. c++ 网络编程(五) LINUX下 socket编程 多种I/O函数 -以及readv和writev函数用法

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614056.html 一.多种I/O函数 前言:之前我们讲的数据传输一般Linux上用writ ...

  4. c++ 网络编程(六)LINUX下 socket编程 多播与广播 实现一次发送所有组客户端都能接收到

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614288.html 一.多播 锲子:有这么一种情况,网络电台可能需要同时向成千上万的用户传输 ...

  5. c++ 网络编程(七) LINUX下 socket编程 基于套接字的标准I/O函数使用 与 fopen,feof,fgets,fputs函数用法

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614820.html 一.标准I/O 1,什么是标准I/O?其实是指C语言里的文件操作函数,如 ...

  6. javase的网络编程(InetAddress,UDP,TCP,URL,Socket,DatagramSocket)

    通过一段时间对java网络编程相关内容的学习,写下这篇随笔,对这一部分的知识进行梳理和总结. 网络编程 一.网络编程三要素: IP地址:网络会给每个联网的主机分配一个数字的编码地址,该地址就是IP地址 ...

  7. 从零探索Java网络编程01之 TCP/IP 与 Socket

    最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧?  一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...

  8. 网络编程:tcp、udp、socket、struct、socketserver

    一.TCP.UDP 一.ARP(Address Resolution Protocol)即地址解析协议,用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址. 二.在网络通信中 ...

  9. Socket网络编程--FTP客户端(60篇socket博客,而且都比较简单、深入浅出)

    已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解FTP作用 就是一个提供一个文件的共享协议. 1.了解FTP协议 ...

随机推荐

  1. oracle新建表空间的四条语句

    1.create user platform identified by intest; 2.create tablespace PLATFORM_DATA datafile 'c:\PLATFORM ...

  2. Ajax中,执行成功却依然刷新本页面

    网页代码是这个<a href="" id="1">删除</a> 当我使用Ajax的时候 $("a").click(f ...

  3. 实训任务04 MapReduce编程入门

    实训任务04 MapReduce编程入门 1.实训1:画图mapReduce处理过程 使用有短句“A friend in need is a friend in deed”,画出使用MapReduce ...

  4. 开通blog,记录学习历程

    2017.12.15日,开通blog,用于回忆知识点的记录和整理. 开通本blog主要做以下几点事情: 1.巩固知识点,基础打牢: 2.在基础牢固的基础上,学习流行的框架: 3.在框架牢固的基础上学习 ...

  5. static(静态)关键字

    class Person{String name; //成员变量,实例变量(实例中的变量) //共享数据出现在对象之前static String country="cn"; //对 ...

  6. 页面通过Jquery取值然后传值到后台显示underfined是怎么回事?

    页面通过Jquery取值然后传值到后台显示underfined是怎么回事? 一般情况下第一个如果用jQuery取值的,末尾要用val(),如果用$符号取值的,末尾要加上val. eg: busines ...

  7. java this关键字的使用

    this关键字 this关键字只能在方法内部使用,表示对"调用方法的那个对象"的引用.      this的三个用法:      1.调用本类中的其他方法        如果在方法 ...

  8. struts2之数据校验

    概述 在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验. 下面通过四种方式来阐述Struts ...

  9. SPRINGMVC中的中文乱码处理

    说到乱码处理,对于很多人来说是非常经常遇到的,现在来总结一下web工程中中文乱码处理的几个步骤,乱码处理大致可以分为一下几步,分别从页面到数据库: 页面传值到后台: 工程编码(最后一开始建立工程就设置 ...

  10. Javascript学习--BOM操作

    1 获取UA(user Agent)用户代理 <!DOCtype html> <html> <head> <title></title> & ...