1.四层:应用层 tcp/ip 传输层 网络层 链路层
2.七层:会话,表示,应用,传输,网络,数据链路,物理层。
理论上是7层,实际上是四层
3.端口,就是区分进程的。区分唯一进程的标记,pid是一台电脑上的进程,在多台电脑上就是端口
4.80端口是http,21端口是给ftp上的,0-25535,知名
1024-65535 动态端口
5.命令,netstat -an
四.ip地址
五.socket
tcp慢,不丢数据
tcp快,容易丢数据
udp绑定
单工:只能收
半双工:对讲机
全双工:电话
发数据
udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))
接收数据
最多能收1024个字节,前面赋值两个数据,就是代表接收到的是两个值,前面需要赋值2个变量
a,b = udpSocket.recvfrom(1024)
#绑定信息,只能绑定本地的,发送方不需要进行绑定,随机就可以,接收方需要绑定,ip地址也可以为空
udpSocket.bind(("",8080))
作业:
写一个程序,进行发数据和接收。无限接受
东哥语录,自己问自己问题
收到的数据在给人返回去叫空包
echo是空包
研究 globle全局变量的引用
作业2.模拟QQ聊天程序,多线程测试
from socket import *
#创建套接字
udpSocket = socket(AF_INET,SOCK_DGRAM)
#绑定信息,只能绑定本地的,发送方不需要进行绑定,随机就可以,接收方需要绑定
udpSocket.bind(("",8080))
# #ip地址确定接收方是谁
# udpSocket.sendto(b"haha",('192.168.0.107',8080))
#发送中文,在字符串后面添加encode("utf-8")
# udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))
udpSocket.sendto('你好'.encode("utf-8"),('192.168.0.107',8080))
#使用udp发送的数据,每发一次信息建立一个连接,ip和端口号
#使用套接字,每次的端口号都是不一样的,python3中不能使用字符串,只能使用 byte类型
# udpSocket.sendto(b"haha",('192.168.119.115',8080))
#收,最多能收1024个字节,前面赋值两个数据,就是代表接收到的是两个值,前面需要赋值2个变量
a,b = udpSocket.recvfrom(1024)
print(a.decode())
from socket import *
def main():
udpSocket = socket(AF_INET, SOCK_DGRAM)
udpSocket.bind(("", 6789))
#收,打印
while True:
recvInfor = udpSocket.recvfrom(1024)
print("[%s]:%s"%(str(recvInfor[1]), recvInfor[0].decode("gb2312")))
if __name__ == "__main__":
main()