#终端查看网络配置
ifconfig
使用udp发送的数据,都要写地址和端口
在同一个OS中,端口不允许相同,即如果某个端口已被使用了,那么在这个进程释放这个端口之前,其他进程不能使用这个端口
udp绑定信息
如果不绑定,每运行一次,socket会随机给进程重新分配一个端口
from socket import *
udpScocket = socket(AF_INET,SOCK_DGRAM)
bindAddr = ('',7788) #默认是本机IP,且只能绑定自己电脑的IP
udpScocket.bind(bindAddr)
recvData = udpScocket.recvfrom(1024)#接收数据
print(recvData)
udpScocket.close()
from socket import *
udpScocket = socket(AF_INET,SOCK_DGRAM)
destIp = input("请输入目的Ip:")
destPort = int(input("请输入目的port:"))
sendData = input("请输入要发送的数据:")
udpScocket.sendto(sendData.encode("utf-8"),(destIp,destPort))
image.png
创建聊天室
from socket import *
def main():
udpScocket = socket(AF_INET,SOCK_DGRAM)】
bindAddr = ('',7788)
udpScocket.bind(bindAddr)
while True:
recvInfo = udpScocket.recvfrom(1024)
print("%s"%(str(recvInfo[1])),recvInfo[0].decode("gb2312"))
if __name__ =="main":
main()
用多线程实现收发同时实现
from threading import Thread
import socket import *
#1、受数据,然后打印
def recvData():
recvInfo = udpScocket.recvfrom(1024)
print("%s"%(str(recvInfo[1])),recvInfo[0].decode("gb2312"))
def sendData():
sendInfo = input("<<")
udpScocket.sendto(sendData.encode("gb2312"),(destIp,destPort))
udpScocket = None
destIp = ""
destPort = 0
def main():
global udpScocket
global destIp
global destPort
destIp = input("请输入目的Ip:")
destPort = int(input("请输入目的port:"))
sendData = input("请输入要发送的数据:")
udpScocket = socket(AF_INET,SOCK_DGRAM)
bindAddr = ('',7788) #默认是本机IP,且只能绑定自己电脑的IP
udpScocket.bind(bindAddr)
tr = Thread(target=recvData)
ts = Thread(target=sendData)
tr.start()
ts.start()
tr.join()
ts.join(
if __name__ = "__main__":
main()
网友评论