一、TCPIP协议
1.TCPIP协议分层
(1)四层(七层):链路层(物理层、数据链路层)、网络层(网络层)、传输层(传输层)、应用层(会话层、表示层、应用层)
二、socket
#创建tcp socket import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sendData = 'hahaha'; s.sendto(b'hahaha', ('192.168.1.1', 8080)) (python3中)
s.sendto(sendData.encode('utf-8'), ('192.168.1.1', 8080)) (python3中) #创建udp socket import socket s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
1.udp绑定信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from socket import * #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配 bindAddr = ('', 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip udpSocket.bind(bindAddr) #3. 等待接收对方发送的数据 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数 #4. 显示接收到的数据 print recvData #5. 关闭套接字 udpSocket.close()
2.udp广播
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from socket import * import sys dest = ("<broadcast>", 7788) udp = socket("AF_INET", "SOCK_DGRAM") udp.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) s.sendto("haha", dest)
三、tcp
1.服务器端
from socket import * tcpSocket = socket(AF_INET, SOCK_STREAM) tcpSocket.bind(("", 8899)) tcpSocket.listen(5) #newSocket表示新的客户端,clientAddr表示新的客户端的ip、端口 newSocket, clientAddr = tcpSocket.accept() recvData = newSocket.recv(1024) print("%s:%s"%(str(clientAddr), recvData)) newSocket.close() tcpSocket.close()
2.客户端
from socket import * tcpSocket = socket("AF_INET", SOCK_STREAM) addr = ("192.168.1.1", 7878) # 连接服务器 tcpSocket.connect(addr) sendData = input("请输入要发送的数据:") # 发送数据 tcpSocket.send(sendData) # 接收服务器发送的数据 recvData = tcpSocket.recv(1024) tcpSocket.close()