python局域网通信_python3 实现tcp/udp局域网通信

1、tcp和udp的关系

tcp/ip是一个协议组,它可以分为四个部分,分别是:链路层、网络层、传输层、应用层

tcp和udp同属于tcp/ip的传输层

tcp是基于连接的协议,也就是说,在正式发送数据前,必须简历可靠的连接。tcp建立连接时需要进行三次握手,关闭连接时需要进行四次挥手,这就好像是在打电话一样。

udp是面向非连接的,它不要要和对方建立连接,而是直接把数据包发送过去,他不需要进行三次握手和四次挥手,这就好像写信一样,相对不可靠。

2、tcp和udp的使用场合

udp使用场合

对效率要求相对高,对准确性要求相对低的场景。udp一般用于即时通信、在线视频、网络语音电话

tcp使用场合

对效率要求相对低,对准确性要求相对高的场景,或者是要求有连接的场景。tcp一般用于文件传输协议(ftp、http)、发送或接收邮件(pop、 smtp)、远程登陆(telnet、ssh)

3、udp的简单实现

#导入socket套接字

importsocket#创建udp套接字

udp_socket =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#绑定端口和ip

udp_socket.bind(('', 8000))#设置允许广播

udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)#获取用户需要发送的内容

mess = input("enter the information you want to send:")#定义目标地址

dest_addr = ("255.255.255.255", 8000)#发送输入的数据到指定的ip,255.255.255.255表示广播

udp_socket.sendto(mess.encode(), dest_addr)#接收1024个字节的数据

recv_data, recv_addr = udp_socket.recvfrom(1024)#打印接收到的数据,因为接收到的数据来自windows,所以需要使用gbk解码

print(recv_data.decode("gbk"))#关闭套接字

udp_socket.close()

4、tcp的简单实现

#服务器端#导入socket套接字

importsocket#创建tcp套接字

server_socket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)#绑定本地ip和端口

server_socket.bind(("",8080))#设置监听状态,1表示统一时刻只能有一个链接

server_socket.listen(1)#等待客户端链接

client_socket, client_addr =server_socket.accept()#设置返回的信息,如果这样返回的话,使用浏览器访问将出现hellworld,因为http协议也是基于tcp的

mess = "HTTP/1.1 200 OK\r\n\r\nhello world"

#给客户端套接字发送数据

client_socket.send(mess.encode())#接受1024个字节的数据

recv_data = client_socket.recv(1024)#打印数据并解编码

print(recv_data.decode("gbk"))#关闭客户端套接字

client_socket.close()#关闭服务器套接字

server_socket.close()

#tcp客户端#导入socket套接字

importsocket#创建tcp套接子

client_socket =socket.socket(socket.AF_INET, socket.SOCK_STREAM)#建立链接

client_socket.connect(("192.168.217.1", 8080))#获取需要发送的数据

send_data = input("enter you need to send:")#发送数据

client_socket.send((send_data.encode()))#接收1024个字节的数据

recv_data = client_socket.recv(1024)#打印数据,因为是windows,所以需要gbk解码

print(recv_data.decode("gbk"))#关闭套接字

client_socket.close()

### 回答1: 在Python中,可以使用socket库来实现局域网通信。下面是一个简单的示例: ``` # 服务器端代码 import socket # 创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host = socket.gethostname() # 设置端口号 port = 9999 # 绑定端口号 s.bind((host, port)) # 等待客户端连接 s.listen(5) while True: # 建立客户端连接 client, addr = s.accept() print('连接地址:', addr) # 发送消息给客户端 client.send('欢迎访问菜鸟教程!'.encode()) # 关闭连接 client.close() # 客户端代码 import socket # 创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host = socket.gethostname() # 设置端口号 port = 9999 # 连接服务,指定主机和端口 s.connect((host, port)) # 接收消息 msg = s.recv(1024) # 关闭连接 s.close() print(msg.decode('utf-8')) ``` 这个示例演示了一个简单的客户端-服务器端模型。服务器在本地绑定一个端口号,并等待客户端连接,一旦连接成功,就向客户端发送一条欢迎消息,然后关闭连接。客户端连接到服务器,并接收服务器发送的欢迎消息,然后关闭连接。 当然,这只是一个简单的示例,实际应用中还需要考虑数据传输的格式、数据长度、异常处理等问题。 ### 回答2: Python可以通过使用Socket模块来实现局域网通信。Socket模块提供了一种通用的网络通信方式,可以通过它进行局域网内的数据传输。 在局域网通信中,一台计算机充当服务器,其他计算机充当客户端。服务器通过创建Socket对象,并绑定到一个特定的IP地址和端口上,等待客户端的连接请求。客户端通过创建Socket对象,并指定服务器的IP地址和端口号,与服务器建立连接。 一旦连接建立,服务器和客户端就可以通过Socket对象的send和recv方法来发送和接收数据。发送方将数据打包成字节流,通过Socket发送给接收方,接收方将接收到的字节流解包成数据。 在局域网通信中,可以使用TCP协议或UDP协议。TCP协议提供可靠的连接和数据传输,但相对较慢。UDP协议提供较快的传输速度,但不保证数据的可靠传输。 使用Python编写局域网通信程序时,可以根据需求选择合适的协议和使用相应的Socket方法。通过Socket模块提供的函数和方法,可以实现数据的发送、接收和处理,从而实现局域网内的通信。 总的来说,Python提供了丰富的网络编程库和工具,可以方便地实现局域网通信。通过Socket模块,可以使用TCPUDP协议在服务器和客户端之间进行数据传输。这为局域网内的数据交互提供了方便和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值