网络协议UDP

Posted 我是小昊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络协议UDP相关的知识,希望对你有一定的参考价值。

------------------------------互联网协议与协议族------------------------------
tcp/ip协议介绍:计算机网络协议,不同类型不同厂家之间的终端进行沟通,规范协议

互联网协议族:为tcp/ip协议族 大概有上百种协议,其中tcp协议、ip协议使用的比较
多所以大家默认成为tcp/ip


IP地址:网络地址(ip地址与子网掩码进行与运算获得)和主机地址
A类IP地址:由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”
(地址范围1.0.0.1-126.255.255.254)
B类IP地址:由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是
“10”(128.1.0.1-191.255.255.254)
C类IP地址:由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须
是“110”(范围192.0.1.1-223.255.255.254)

 

------------------------------socket介绍------------------------------
#定义:socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主
要不同是:

#import socket:应用socket包
#socket.socket(Address Family,Type):创建一个套接字,返回socket的描述符
Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者
AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
Type:套接字类型,可以是 SOCKET_STREAM(流式套接字,主要用于 TCP 协议
)或者 SOCKET_DGRAM(数据报套接字,主要用于 UDP 协议)

 

------------------------------udp协议------------------------------
upd协议:快速传播数据,但不太安全。19世界70年代

#udpSocket = socket(AF_INET, SOCK_DGRAM):创建套接字

#sendData = raw_input("请输入要发送的数据:"):从键盘获取数据

#sendAddr = (‘192.168.1.103‘, 8080):准备接收方的地址

#bindAddr = (‘‘, 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip
#udpSocket.bind(bindAddr)# 绑定本地的相关信息,如果一个网络程序不绑定,则系统
会随机分配

#udpSocket.sendto(sendData, sendAddr):发送数据到指定的电脑上

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

#udpSocket.close():关闭套接字

 

------------------------------编写案例------------------------------

 1 #coding=utf-8
 2 
 3 #引用对应的包
 4 import socket
 5 
 6 import threading
 7 
 8 import sys
 9 
10 #全局变量socket
11 global_soc=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
12 
13 #线程:信息接受
14 class MyThreadJieShou(threading.Thread):
15     #重写构造函数
16     def __init__(self,port):
17         threading.Thread.__init__(self)
18         #进程端口
19         self.port=int(port)
20     
21     #重写run方法
22     def run(self):
23         #socket全局变量
24         global global_soc
25         
26         #创建ip和端口号
27         self.locker=("",self.port)
28         
29         global_soc.bind(self.locker)
30         
31         while True:
32             self.result=global_soc.recvfrom(1024)
33             print ("\n")
34             print (self.result)
35         
36         global_soc.close()
37 
38 #线程:信息发送
39 class MyThreadFaSong(threading.Thread):
40     #重写run方法
41     def run(self):
42         #全局变量socket
43         global global_soc
44 
45         #创建发送的目标端口号
46         addr=("192.168.13.33",8080)
47         
48         while True:
49             strCount=raw_input("请输入:")
50             
51             #信息的发送
52             global_soc.sendto(strCount,addr)
53 
54         global_soc.close()
55         
56 
57 if __name__=="__main__":
58     #创建对应的线程
59     jieShou=MyThreadJieShou(sys.argv[1])
60     faSong=MyThreadFaSong()
61 
62     #进程开启
63     jieShou.start()
64     faSong.start()

 

以上是关于网络协议UDP的主要内容,如果未能解决你的问题,请参考以下文章

JAVA网络编程知识学习

java 网络编程 基于UDP协议的通信

网络编程 socket模块 tcp协议 udp协议

异常处理与网络基础中的tcp,udp协议

网络LinuxLinux网络编程-TCP,UDP套接字编程及代码示范

网络LinuxLinux网络编程-TCP,UDP套接字编程及代码示范