python 0基础学习笔记15:TCP、UDP

mac2025-04-06  9

TCP:

客户端:

客户端:创建TCP链接时,主动发起链接的叫客户端 服务端:接收客户端的链接

import socket #1、创建一个socket # 参数1:指定协议 AF_INET 或 AF_INET6(IPv4或IPv6) # 参数2:SOCK_STREAM执行使用时间面向流的TCP协议 sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2、建立链接 #参数是一个元组,第一个元素为要连接的服务器的IP地址,第二个元素为端口号 sk.connect(('www.sina.com.cn',80)) sk.send(b'GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n') #等待接收数据 data = [] while True: #每次接受1k的数据 tempData = sk.recv(1024) if tempData: data.append(tempData) else: break dataStr = (b''.join(data)).decode('utf-8')#组合一下 ,怕有汉字,编码一下 #断开链接 sk.close() print(dataStr) headers,HTML = dataStr.split('\r\n\r\n',1) print(headers) print(HTML)

客户端和服务器对话:

server:

import socket #创建一个socket server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #绑定IP端口 server.bind(('192.168.1.100',8081))#写自己电脑本机的IPv4地址 #监听 server.listen(5) print('服务器启动成功') #等待链接 clientScoket,clientAddress = server.accept() print('%s---%s 链接成功'%(str(clientScoket),clientAddress)) while True: data = clientScoket.recv(1024) print('客户端说:'+data.decode('utf-8')) sendData = input('返回给客户端的数据:') clientScoket.send(sendData.encode('utf-8')) ''' while True: #等待客户端链接 clientScoket,clientAddress = server.accept() #启动一个线程,将当前连接的clientScoket交给线程 '''

client:

import socket # client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect(('192.168.1.100',8081)) while True: data = input('请输入给服务器发送的数据:') client.send(data.encode('utf-8')) info = client.recv(1024) print('服务器说:',info.decode('utf-8'))

UDP:

TCP是建立可靠地链接,并且通信双方都可以以流的形式发送数据,相对于TCP,UDP则是面向无连接的协议。

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发送数据包,但是对方能不能收到就不知道了

虽然UDP传输数据不可靠,但优点是和TCP比,速度快,对于要求不高的数据可以使用UDP。

冒充飞Q:

import socket udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) udp.connect(('192.168.1.100',2425))#飞Q端口是2425固定的 udp.send('abc'.encode('utf-8'))

客户端和服务器对话:

server:

import socket udpServer = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) udpServer.bind(('192.168.1.100',8900)) while True: data,addr = udpServer.recvfrom(1024) print('客户端说:',data.decode('utf-8')) info = input('请输入数据:') udpServer.sendto(info.encode('utf-8'),addr)

client:

import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True: data = input('请输入数据:') client.sendto(data.encode('utf-8'),('192.168.1.100',8900)) info = client.recv(1024).decode('utf-8') print('服务器说:',info)
最新回复(0)