目录
一、socket编程简介
Socket又称"套接字",是计算机间进行网络通信的一套程序接口。
套接字:IP+端口
Socket通信是基于客户端/服务器结构(C/S),可隐藏复杂的TCP/IP协议族,只要遵循Socket的规定就可以进行网络程序开发,简单且开发效率高。
Python中的socket模块,提供了套接字编程的大部分功能。支持使用UDP和TCP协议进行网络通信。
二、UDP编程
1.介绍
UDP属于无连接协议,在向接收方发送信息时不需要建立连接,而是直接发送即可。
UDP的应用:域名系统;视频流;IP语音等。
UDP编程流程及常用的
socket模块方法如图所示。
2.UDP编程socket方法说明
①socket.socket([family[, type[, proto]]]): 创建Socket对象
family |
说明 |
socket.AF_ INET |
IPv4协议 |
socket.AF_ INET6 |
IPv6协议 |
socket.AF_UNIX |
只能够用于单一的Unix系统进程间通信 |
type |
说明 |
socket.SOCK_STREAM |
流式socket , for TCP |
socket.SOCK_DGRAM |
数据报式socket , for UDP |
socket.SOCK_RAW |
原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。 |
socket.SOCK_SEQPACKET |
可靠的连续数据包服务 |
proto |
一般不填,默认为0 |
②bind(address):绑定地址
③sendto(string,address):发送数据把string发送给指定的address。其中address格式为(接收方IP地址,端口号)。address用元组表示(ip,port)
④recvfrom(bufsize[,flags]): 接收数据
bufsize 指定要接收的最大数据量。flag 提供有关消息的其他信息,通常可以忽略。
返回值是元组(data,address)。data为接收的字节串,address是数据发送方的套接字地址。
注意:socket在发送数据时,数据类型为字节串,发送时需将字符串转换为字节串,接收时需要将字节串转换为字符串。
⑤close{}关闭套接字
3.UDP编程实例
要求:基于UDP协议,使用socket编写编写一个服务端程序UDP_server.py,一个客户端程序UDP_client.py,实现客户端和服务端间的通信。
(1)服务端UDP_Server程序
import socket
# 1.创建s