1.IP地址介绍
IP地址是标识网络中设备的一个地址
IP分为IPv4和IPv6,ipv4是由点分十进制组成,ipv6是由冒号十六进制组成
检查当前设备是否联网用ping www.baidu.com
查找ip地址:ipconfig
2.端口和端口号
端口是传输数据的通道
端口号是对端口进行编号
知名端口号:总所周知的端口号范围0~1023
动态端口号:是程序开发使用的端口号称为动态端口范围1024~65535
3.TCP
TCP:传输控制协议,面向链接,可靠,字节流的传输通信协议
4.socket介绍
网络数据传输可以通过socket来完成
socket.AF_IEAT 对应IPV4
sovket.SCOK_STREAM TCP
5.TCP客户端开发流程
创建客户端
与服务端连接
发送数据
接收数据
关闭客户端
进口套接字
colient_socket = socket.socket (socket.AF_IEAT socket.SOCK.STREAM)
colient_socket.connent ((“IP地址”,端口号))
data =“你”好.encode (“utf - 8”)
clinet_socket.send(数据)
recv_data = client_socket (1024) .decode (utf - 8)
打印(recv_data)
client.close()
- tcp服务端开发流程
创建服务端口
绑定端口
设置监听
等待客户端连接
接收数据
发送数据
关闭服务端
进口套接字
srevent_socket = socket.socket (socket.AF_IEAT socket.SOCK_STREAM)
srevent_socket.setsockopt (socket.SOL_SOCKET socket.SO_REUSEADDR,真的)
srevent_socket.bind ((“ip地址”,端口号))
srevent_socket.listen (128)
client,ip_port = srevent_socket.accept()
print(“客户端{}使用{}”.format(ip_port[0],ip_port[1]))
while True:
data = client.recv(1024).decode(‘UTF-8’)
if len(data)== 0:
client.close()
else:
print(data)
data = data.encode(‘UTF-8’)
client.send(data)
client.close()
srevent.close()
7 .多任务版服务端开发流程
def任务():
进口套接字
进口线程
srevent_socket=socket.socket(socket.AF_IEAT,socket.SOCK_STREAM)
srevent_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
srevent_socket.bind(('ip地址‘,端口号))
srevent_socket.listen(128)
client,ip_port = srevent_socket.accept()
print(“客户端{}使用{}”.format(ip_port[0],ip_port[1]))
while True:
data = client.recv (1024) .decode (“utf - 8”)
如果len(数据)= = 0:
client.close ()
其他:
打印(数据)
data = data.encode (“utf - 8”)
client.send(数据)
client.close ()
srevent.close ()
如果__名字__= = ‘main’:
t =threading.Thread(target=task())
t.start()
#根据服务端开发流程自定义多线程位置
8.发送和recv原理刨析
发送和recv会把数据先放在缓冲区,等达到一定数量后进行发送