python——网络

2018-05-18  本文已影响45人  Jalynn葸
#终端查看网络配置
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()
上一篇下一篇

猜你喜欢

热点阅读