• python 网络编程


    一 网络基础

      互联网协议按照功能不同分为osi七层或者ip/tcp五层,ip/tcp四层。

      数据链路层:有个以太网协议,ethernet,一组电信号称为一个数据报,也叫帧。ethernet规定接入internet的计算机都必须有网卡,发送端和接收端的地址就是网卡地址,也就是MAC地址。

      网路层:规定网络地址的协议叫做ip协议,它定义的地址叫做ip地址。

      传输层:tcp/udp协议。

      

    二 socket

      socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。

      实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。

       1 套接字的两个种族  

        1 AF_UNIX,基于文件类型。很少用

        2 AF_INET,基于网络类型。  AF,代表 Address Family,地址族。

      

      Server端

    import socket
    server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server.bind(('127.0.0.1',8080))      #绑定
    server.listen(5)                     #监听
    while True:                          #连接循环
        conn,ip_port=server.accept()     #创建client与server端的连接
        print('conn',conn)
        print('ip_port',ip_port)
        while True:                    #通信循环
            try:                       #异常处理,client端突然断开
                date=conn.recv(1024)   #接收
                
           if not date:break #这行代码是针对linux,在linu中如果client突然断开,conn.recv由阻塞状态变为不阻塞状态,一直接收 空。
           print(date) conn.send(date.upper()) #发送 except Exception: break conn.close() server.close()

      Client端

    import socket
    client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect(('127.0.0.1',8080))
    while True:                                     #通信循环
        cmd=input('==>')
        if not cmd:continue                         #判定不能为空,为空,实际上client端没有被操作系统发出数据,空 操作系统就不会发出。
        client.send(bytes(cmd,encoding='utf-8'))
        date=client.recv(1024)
        print(date.decode('utf-8'))
  • 相关阅读:
    跨域的几种方式
    jQuery滚动条回到顶部或指定位置
    获取屏幕高度、宽度
    js判断手机系统和微信
    js获取url中的参数
    css3内容溢出属性
    css盒模型
    [转]swagger2 入门教程
    [转]cron表达式的用法
    [转]React入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/654321cc/p/7592962.html
Copyright © 2020-2023  润新知