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()
  • 相关阅读:
    全栈的苦逼和崛起
    Swift内部类调用外部类方法、属性的变通
    Assets.xcassets误删后的恢复
    UITableViewCell嵌套UITableView的正确姿势
    GPU Accelerated Computing with Python
    Windows 10创意者更新ISO发布!官方下载
    Amazing iOS Tips
    self-sizing cell的一个问题
    buf.swap32()
    buf.swap16()
  • 原文地址:https://www.cnblogs.com/gongteng/p/13543332.html
Copyright © 2011-2022 走看看