网络通信UDP

2019-01-17  本文已影响0人  Dalvik_

TCP/IP协议

四层表示:链路层--->网络层--->传输层--->应用层
七层表示:物理层--->数据链路层--->网络层--->传输层--->会话层--->表示层--->应用层

Socket

创建一个tcp socket(tcp套接字)

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket Created'

创建一个udp socket(udp套接字)

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print 'Socket Created'

使用Socket发送消息

import socket

udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sendAddr = ("192.168.0.178", 8888)

sendData = "Hello World"

udpSocket.sendto(bytes(sendData, 'utf-8'), sendAddr)

udpSocket.close()

使用Socket接收数据

import socket

udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

bindAddr = ('', 8888)  # ip地址和端口号,ip一般不用写,表示本机的任何一个ip
udpSocket.bind(bindAddr)

recvData = udpSocket.recvfrom(1024)  # 1024表示本次接收的最大字节数
print(recvData)

udpSocket.close()

UDP广播

import socket

# 相当于 192.168.1.255 通用的网段写法
dest = ('<broadcast>', 7788)

# 创建udp套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 对这个需要发送广播数据的套接字进行修改设置,否则不能发送广播数据
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

# 以广播的形式发送数据到本网络的所有电脑中
s.sendto("Hi".encode('utf-8'), dest)

print("等待对方回复(按ctrl+c退出)")

while True:
    (buf, address) = s.recvfrom(2048)
    print
    "Received from %s: %s" % (address, buf)

广播只能在UDP中使用

上一篇 下一篇

猜你喜欢

热点阅读