我们的程序写完之后不能总是在Pycharm的黑框框上进行run,这样写的程序是毫无意义的.与我们生活正常见的软件,网站也并不相同.
想要不止在自己的电脑上运行,与其他人进行信息传递.那么就需要进行网路编程
1.什么是网络编程?
编写的程序可以再不同的电脑上进行信息交互.
2.socket模块.
想要编写能够在不同电脑上进行信息交互的程序,这时我们就需要引入socket模块.
我们所写的程序通常含有两部分,一部分是用户使用的客户端,另一种便是为用户提供服务的的服务端,
服务端:
import socket # 导入socket模块
IPPORT=(127.0.0.1,8000) # 服务器要绑定的IP地址和端口
server = socket.socket() # 实例化一个socket对象
server.bind(IPPORT) # 绑定IP地址和端口
server.listen(5) # 设置最多排队等待5人
server.accept() # 等待客户端连接
server.send() # 服务端向客户端发送信息
server.recv() # 服务端等待接收客户端发送过来的信息
客户端:
import socket #导入socket模块
IPPORT=(127.0.0.1,8000) # 客户端要连接的IP地址和端口
client = socket.socket() # 实例化一个socket对象
client.connect(IPPORT) # 客户端连接服务端
简单吧! 就像上面那样,一个简易的客户端和服务端连接就完成了! 就可以进行数据传输啦!
3.socket 需要注意的几点
如果服务器准备好了,但是没有人连接他或者说客户端连接服务端的时候因为一些不为人知的情况没有连接上,这种情况下程序会怎样呢?
如果服务器准备接收数据,但是客户端没有发送或者发送的过程数据丢失了,反之一样,这种情况下程序又会怎么样呢?
#################################################################################################
如果发生了上述情况,程序不会终止而是会停在某一个位置.我们称这种情况为阻塞
容易发生阻塞的点有哪几个地方呢?
服务端:
recv(),accept()
客户端:
client(),recv()
如果程序停住了,一定要注意客户端的send和recv有没有一一对应哦!