1.socket模块
socket是Python中的一种数据结构====>套接字
socket模块是用于网络通信的模块,主要是用于tcp的server端和client端的搭建,以及udp的server端和client端的搭建,在搭建服务端的时候,要注意的是:
server端:
ip地址:
几个常见的ip地址的区别:
1. 127.0.0.1用于测试,这个是回环地址,采用该ip后不会走交换机,仅限在本机
2. 0.0.0.0的作用在不同的机器中代表的含义不同,具体的如下:
- 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么 通过两个ip地址都能够访问该服务。
- IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。
- 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
3. localhost一般是等同于127.0.0.1,不过载Ubuntu上忽悠区别
一般我们在服务端定义一个变量时要注意的是ip地址,测试使用127.0.0.1,ipv4的ip地址,0.0.0.0,localhost都可以,除了localhost和127.0.0.1不能用于局域网内的通信,其余两个都可以实现
端口(port):
端口:可以浅显的理解为操作系统给予,通过端口号,可以确定某一个应用程序,应用程序间的通信时通过端口和ip实现的
一共有65535个,8000以前的端口是留给操作系统备用的
在服务的开一个端口的话,客户端如果要连接的话一定要端口一致才能通信
缓冲(buffersize):
这里是设置缓冲接受多少字节
下面是TCP_Server的代码:
1 from socket import * 2 from time import ctime 3 4 # 主机常量 5 HOST = '' 6 PORT = 9999 7 BUFFERSIZE = 1024 8 ADDR = (HOST, PORT) 9 10 # 实例化对象,绑定地址并启用监听 11 tcpSerSoc = socket() 12 tcpSerSoc.bind(ADDR) 13 tcpSerSoc.listen() 14 15 conn, addr = tcpSerSoc.accept() 16 ret = conn.recv(BUFFERSIZE).decode('utf-8') 17 18 print(ret) 19 20 t = ctime() 21 conn.send(t.encode('utf-8')) 22 23 conn.close() 24 25 tcpSerSoc.close()
client端:
client端要注意的是要连接的服务端的ip地址和端口,在Python3中发送的内容要以bytes类型发送
下边是TCP_Client端的代码:
1 from socket import * 2 from time import ctime 3 4 # 主机常量 5 HOST = 'localhost' 6 PORT = 9999 7 BUFFERSIZE = 1024 8 ADDR = (HOST, PORT) 9 10 tcpCliSoc = socket() 11 tcpCliSoc.connect(ADDR) 12 13 tcpCliSoc.send(b'hello') 14 data = tcpCliSoc.recv(BUFFERSIZE).decode('utf-8') 15 16 print(data) 17 18 tcpCliSoc.close()
要运行的话先要开启服务端,在开启客户端