网络编程-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()
posted @ 2020-08-21 21:20  骑着旺财上前线  阅读(106)  评论(0编辑  收藏  举报