网络编程

网络编程

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去组织数据,以符合指定的协议.

为什么要网络通信发送的是字节?而不是字符串?

原文地址:https://www.cnblogs.com/y122988/p/9578736.html