网络概述、UDP编程与创建socket套接字

1.  网络的定义

在电的系统中,由若干元件组成的用来使电信号按一定要求传输的电路或这种电路的部分,叫网络。
现在一般指“三网”:电信网络、有线电视网络、计算机网络。狭义的含义即因特网。抽象意义上的网络。比如城市网络、交通网络、交际网络等。

端口是两个进程(应用程序)在同一台电脑或者不同电脑之间通信的标识。每一款应用的绑定的端口不一样,数据不会发错。在同一台电脑中,两个进程的端口不能相同,如果已经存在,就往后去找对应的数做端口号。
什么是端口
udp广播:只有udp才有广播,一台电脑发出去的数据,大家电脑就能收到的数据,这些数据是广播数据    单播-->点对点  多播(组播)-->一对多广播-->一对所有
通过地址就可以访问,其中8080就是端口,http://127.0.0.1:8080/
127.0.0.1可以代表本机IP地址
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。
知名端口(Well Known Ports)
知名端口是众所周知的端口号,范围从0到1023,这些端口不要用。
查看端口 用“netstat -an”查看端口状态上面命令Linux和window都可以
端口是两个进程(应用程序)在同一台电脑或者不同电脑之间通信的标识。每一款应用的绑定的端口不一样,数据不会发错。在同一台电脑中,两个进程的端口不能相同
在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。
查看端口 
用“netstat -an”查看端口状态上面命令Linux和window都可以

“IP地址+端口号”来区分不同的服务(进程)

ip地址就是在局域网、互联网内标记一台电脑地址。通过ip地址可以找到一条对应的电脑,也就是说只要电脑联网,都会有一个ip地址跟电脑对应。
socket简介是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
它能实现不同电脑间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的;网络中两个进程之间通信标识--IP地址+端口

创建socket

在 Python 中 使用socket 模块的函数 socket 就可以完成:
import socket
#创建一个可以在不同电脑间(AF_INET)通信的,tcp(SOCK_STREAM)套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)——>TCP
#创建一个可以在同一台电脑(AF_UNIX)通信的,udp(SOCK_DGRAM)套接字
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)------->UDP
函数 socket.socket 创建一个socket,返回该 socket 的描述符,该函数带有两个参数:
Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

UDP网络程序客户端-发送数据(语音和视频用的协议)

UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的传输层协议。UDP不可靠,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

创建一个udp客户端程序的流程是简单,具体步骤如下:

1、创建客户端套接字
2、发送/接收数据
3、关闭套接字
数据格式
版本号:编号:发送者姓名:发送者机名:命名字(32):附加信息
例如:1:12312312312:美女:妹妹-pc:32:约吗
from socket import *
#创建一个udp套接字,支持两台电脑间通信(每次运行时端口号都不一样)
udp_socket = socket(AF_INET,SOCK_DGRAM)
#绑定端口
send_address = ("192.168.31.24",8080)
#发送内容
udp_socket.sendto("来自linux".encode("gb2312"),send_address)
#接收数据,1024表示本次接收的最大字节数
recv_data = udp_socket.recvfrom(1024)
#关闭套接字
udp_socket.close()
udp绑定端口信息
其他的网络程序占用同一个端口号,往往在编程中,udp的端口号一般不绑定,但是如果需要做成一个服务器端的程序的话,是需要绑定的,如果不绑定端口,无法给你发数据。
udp_socket.bind(("", 8888))元组
#发送方绑定端口,第一个参数写"",
# 代表当前电脑多张网卡的任何一个网卡的ip随机的,建议写""
编码encode("utf-8") 解码decode("utf-8")编码解码的库要对应

猜你喜欢

转载自blog.csdn.net/xiaoming0018/article/details/80353359