网络编程一定要看过的socket另一座大山

上次的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协议.这个协议是非常的安全的,不会有信息的丢失.建立时候有三次握手,断开的时候有四次挥手.

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

上一篇:【01-14】hibernate时间生成


下一篇:图的遍历——DFS(矩形空间)