网络编程
网络编程
a,软件
客户端: CS架构,client--> server
浏览器:BS 架构 , browser --> server
b,如何实现相互通信
需求一:编写俩个软件,软件之间相互通信
需求二:俩个人直接连接(网线)
需求三: 教室相互通信(交换机)
使用ip地址:ipconfig
需求四:和三亚女友通信(交换机+n*路由器)
c,基于socket模块实现网络通信
import socket # 创建服务端socket对象 server = socket.socket() # 绑定IP和端口 server.bind(('192.168.13.155',8000)) # 后边可以等5个人 server.listen(5) print('服务端准备开始接收客户端的连接') # 等待客户端来连接,如果没人来就傻傻的等待。 # conn是客户端和服务端连接的对象(伞),服务端以后要通过该对象进行收发数据。 # addr是客户端的地址信息。 # #### 阻塞,只有有客户端进行连接,则获取客户端连接然后开始进行通信。 conn,addr = server.accept() print('已经有人连接上了,客户端信息:',conn,addr) # 通过对象去获取(王晓东通过伞给我发送的消息) # 1024表示:服务端通过(伞)获取数据时,一次性最多拿1024字节。 data = conn.recv(1024) print('已经有人发来消息了',data) # 服务端通过连接对象(伞)给客户端回复了一个消息。 conn.send(b'stop') # 与客户端断开连接(放开那把伞) conn.close() # 关闭服务端的服务 server.close()
理解socket
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的借口就是全部让Socket去组织数据,以符合指定的协议.
为什么要网络通信发送的是字节?而不是字符串?