美文网首页
6.网络通信

6.网络通信

作者: 这是李金辉呀 | 来源:发表于2019-01-18 11:52 被阅读0次

    网络通信-UDP——TCP

    ip地址(网络地址和主机地址):用来在网络中标记一台电脑,比如192.168.1.1;在本地局域网上是唯一的。

    分类:
         1. A类IP地址:1.0.0.1-126.255.255.254
         2. B类IP地址:128.1.0.1-191.255.255.254
         3. C类IP地址:192.0.1.1-223.255.255.254
         4. D类地址用于多点广播:224.0.0.1-239.255.255.254
         5. E类IP地址:1111开始,为将来使用保留
         6. 私有ip:局域网使用
            7. 10.0.0.0~10.255.255.255
            8. 172.16.0.0~172.31.255.255
            9. 192.168.0.0~192.168.255.255
         10. 127.0.0.1~127.255.255.255用于回路测试,127.0.0.1可以代表本机IP地址
    

    网络管理命令

    ping:测试远程主机连通性

    ifconfig:显示所有网卡信息

    端口:0到65535 不同的端口对应不同的服务

    • HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等

    分配

    知名端口(Well Known Ports):程序使用知名端口需要有root权限[0到1023]
        80端口分配给HTTP服务
        21端口分配给FTP服务
    动态端口(Dynamic Ports)[1024到65535]动态分配,程序 关闭则释放
    

    查看端口:netstat -an |lsof -i [tcp/udp]:2425

    socket[套接字]不同主机进程间通信的一种方式

    电脑之间通信

    进程号PID来标识进程,但在网络传输中利用ip地址、协议和端口来标识网络中的进程。

    创建socket

    import socket
    socket.socket(AddressFamily,Type)
    
    1. AddressFamily:可选AF_INEF(Internet进程间通信,常用)或AF_UNIX(用于同一台机器进程之间的通信)
    2. Type:套接字类型,SOCK_STREAM(流式套接字,用于TCP协议)或者SOCK_DGRAM(数据报套接字,用于UDP协议)
    创建一个TCP套接字
    import socket
    s =  socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.close()
    
    ```
    创建一个UDP套接字
    import socket
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.close()
    ```
    

    UDP网络程序 类似写信

    1. 创建套接字
    2. 发送、接受套接字
    from socket import *
    udp_socket = socket(AF_INET,SOCK_DGREAM)
    dest_addr = ('192.168.1.103',8080) # 元组,不可修改,存放IP地址和端口
    send_data = imput("请输入要发送的数据:")
    udp_socket.sendto(send_data.encode('utf-8'),dest_addr) #编码发送
    resv_data = udp_socket.recvfrom(1024) #1024表示本次接收的最大字节数
    print(recv_data[0].decode('gbk'))#解码打印
    print(recv_data[1])
    udp_socket.close() #关闭套接字
    
    1. str.encode()
    2. bytes.decode()

    TCP传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)类似打电话

    创建连接、数据传送、终止连接

    1. 发送应答机制
    2. 超时重传
    3. 错误校验
    4. 流量控制和阻塞管理
    from socket import *
    tcp_client_socket = socket(AF_INET, SOCK_STREAM)# 创建socket
    # 目的信息
    server_ip = input("请输入服务器ip:")
    server_port = int(input("请输入服务器port:"))
    # 链接服务器
    tcp_client_socket.connect((server_ip, server_port))
    # 提示用户输入数据
    send_data = input("请输入要发送的数据:")
    tcp_client_socket.send(send_data.encode("gbk"))
    # 接收对方发送过来的数据,最大接收1024个字节
    recvData = tcp_client_socket.recv(1024)
    print('接收到的数据为:', recvData.decode('gbk'))
    # 关闭套接字
    tcp_client_socket.close()
    
    1. socket创建一个套接字
    2. bind绑定ip和port
    3. listen使套接字变为可以被动链接
    4. accept等待客户端的链接
    5. recv/send接收发送数据

    相关文章

      网友评论

          本文标题:6.网络通信

          本文链接:https://www.haomeiwen.com/subject/ghxndqtx.html