zoukankan      html  css  js  c++  java
  • 网络编程-01-服务端搭建

    '''
    1.软件
    软件APP形式: cs架构, client --> server. (-->:客户端与服务端是通过网络连接的)
    游览器形式: BS架构, browser --> server

    2.如何实现相互通信?
    (1)相互通信本质是发送01代码
    (2)交换机的作用
    (3)通过ipconfig查看自己的内网IP
    (4)公网IP,掏钱

    3.socket模块是专门用来实现网络通信的

    4.一个程序要有自己独立的端口,不能与其他程序重复,否则会造成连接紊乱.例如服务器的电脑上同时有qq(端口:8001) 与 微信(端口:8002)这两款程序,
    则可以认为服务器电脑上提供(开放)了两个端口,一个对应qq程序的,一个对应微信程序的.当qq的数据从客户端发来了,就需要去qq对应的端口8001上进行连接.
    同理当微信的数据来了,就去连接8002端口.
    设置不同端口实现了,收发数据时不同程序之间的相互隔离.




    '''
    import socket

    # 创建服务端的socket对象
    server = socket.socket()

    # 绑定IP和端口.'192.168.13.155'是自己IP地址,用来标识你自己.'8000'是不同程序的端口,为了实现程序与程序之间的相互隔离.
    server.bind(('192.168.43.148', 8000))

    # 后面最多排5个可以对服务端进行连接
    server.listen(5)

    # 等待客户端来连接,如果没人来就傻傻的等待,也即这行代码可以阻塞程序
    conn, addr = server.accept() # conn是客户端和服务端连接的对象,服务器以后要通过该对象进行收发数据.addr是客户端地址信息.

    # 通过对象去获取(接收)客户端发送的信息,recv要是未接受到客户端发送的信息,那服务端会一直等,也即recv会阻塞程序向下进行.
    data = conn.recv(1024) # 1024表示一次性最多可获取(接收)1024个字节

    # 打印从客户端接收的信息
    print(data)

    # 给客户端回一个信息,也是通过连接对象conn进行的信息回复,回一个字节形式的'stop'
    conn.send(b'stop')

    # 通过连接对象关闭连接,但客户端依旧存在
    conn.close()

    # 关闭服务端的服务,关闭后就不能再有客户端连接上服务端了
    server.close()
  • 相关阅读:
    04构建之法阅读笔记之四
    冲刺周期第十天
    冲刺周期第九天
    第二阶段冲刺--每日立会(4)
    第二阶段冲刺--每日立会(3)
    第二阶段冲刺--每日立会(2)
    第二阶段冲刺--每日立会(1)
    第十二周学习记录表
    第一阶段冲刺--每日立会(10)
    第一阶段冲刺--每日立会(9)
  • 原文地址:https://www.cnblogs.com/gongteng/p/13543332.html
Copyright © 2011-2022 走看看