网络编程
服务端
1、创建socket
2、端口绑定
3、开启监听
4、持续等待连接
5、获取请求
6、回复请求
7、关闭连接
客户端
1、创建对象
2、获取连接
3、发送请求
4、接收数据
5、断开连接
#!C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe
#coding=gbk#一定要注意设置字符编码,否则很可能报错
import socket
import sys
# 1、创建socket对象
serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 2、绑定
host = socket.gethostname()
port = 9999
serversocket.bind((host,port))
# 3、监听,设置最大连接数,超出后排队
serversocket.listen(5)
#4、等待接入
while True:
clientsocket,addr = serversocket.accept()
print("连接地址:%s"% str(addr))#返回的第一个值为服务器信息,第二个值为客户端信息
msg="欢迎访问菜鸟教程"
#5、主动发送消息
clientsocket.send(msg.encode("utf-8"))
#6、接收请求
#7、关闭连接
clientsocket.close()
#!C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe
import socket
import sys
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = socket.gethostname()
port = 9999
s.connect((host,port))
msg= s.recv(1024)
s.close()
print(msg.decode("utf-8"))
要点:socket套接字其实就是一个特殊的文本,里面存储着用于通讯的地址和端口,还有一些协议,fid,这些我们通过打印socket可以的知道, 我们要注意的是,在服务器端的首次创建出的socke套接字只用于绑定端口和设置监听,真正用来进程通讯的是通过accept()返回的第一个参数(clientsocket),即用于通讯的套接字,里面含有服务端地址,服务端用于服务的端口,客户端地址,客户端用于通讯的端口,地址是用来网络寻址找到对应电子设备(电脑等),端口则是用于进程间的通讯。所以我们可以知道,如果有3个客户端连接服务器,那么服务器端将有4个套接字,1个是服务器端用于绑定和监听的套接字,3个分别与客户端通信的套接字,每个客户端都有一个用于与服务端通信的套接字。
在写本文时,查了下资料,看到了篇文章,真的很秀。。。。所以我就不写了,大家看这篇文章,这篇文章很长,是作者整理了很久的,虽然很多内容是重复的,但这也能够让我们加深印象。