网络编程

Posted 埃博拉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程相关的知识,希望对你有一定的参考价值。

一 客户端/服务器架构

应用类:qq等应用

web类:百度网页等

c\\s架构 和b\\s架构,其实b\\s 是c\\s架构的一种

osi七层,一般来说将5、6、7看为一层

应用层  负责编辑程序等

传输层 选择通信协议tcp/udp

网络层 给上一步的消息加IP信息

数据链路层  给上一步的东西添加mac地址

物理层 通过网线 网卡的物理介质传输东西 给另一台

 

IP地址可以确认唯一的电脑

端口确定为一个程序

ip+端口 确认唯一机器的唯一程序

可以通过IP地址找到mac地址就是arp协议

建立连接需要三次握手

数据传输需要2次

断开连接需要4次握手

socket层

socket又叫做套接字

套接字是一种具有之前说的通信端点概念的计算机网络数据结构

网络化的程序在开始任何通讯前都必须创建套接字

套接字有两种

一种是文件型应用于同一台电脑上不同程序之间的通讯

另一种是基于网络型的 用于不同电脑

AF_INET是现存的最长用的套接字

套接字地址:主机与端口

合法的端口0~65535

小于1024的端口是系统保留端口,一般用的是8000往上,最熟悉的端口是8080

面向连接, TCP套接字,  指定套接字SOCK_STREAM 整套分块有序传输没有数据边界

无连接  UDP套接字 指定套接字为SOCK_DGRAM 数据宝套接类型的无连接套接字,无需建立连接就可以直接通讯,数据可达顺序,可靠性,不重复性无法保证,数据报是将数据整个发送,无法保证一定可以到达,但是好处是没必要维护虚拟线路等,成本低廉

socket模块函数

tcpsock = socket.socket(socket.AF_INET)  

import socket
tcpsock = socket.socket()
tcpsock.bind((\'192.168.13.86\',8888))
tcpsock.listen()
conn,addr = tcpsock.accept()
userinfo = True
while userinfo !=\'bey\':
    ret = conn.recv(1024).decode(\'utf-8\')
    if ret == \'bey\':
        conn.close()
        break
    print(ret)
    userinfo = input(\'请输入代码\')
    conn.send(bytes(userinfo,encoding=\'utf-8\'))
tcpsock.close()


客户端
import socket
tcpsock = socket.socket()
tcpsock.connect((\'127.0.0.1\',8888))
userinfo = True
while userinfo != \'bey\':
    userinfo= input(\'请输入内容\')
    tcpsock.send(bytes(userinfo,encoding=\'utf-8\'))
    ret = tcpsock.recv(1024).decode(\'utf-8\')
    if ret == \'bey\':
        tcpsock.send(b\'bry\')
        break
    print(ret)
tcpsock.close()

 

以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC

如何在 Django Summernote 中显示编程片段的代码块?