socket编程——upd(数据报套接字)
ip地址
用来标记网络上的一台电脑
如何查看电脑的IP地址?
分Windows和Linux系统
- Windows是ipconfig
- Linux是ifconfig
IP地址的分类
按版本分类
Ipv4:
- IP协议的版本号是4
- 目前在用,应用最广泛
- 地址位数是32位(4个字节)
- 地址有限,基本已消耗完毕
ipv6:
- IP协议的版本号是6
- 在试验当中,应用还不广泛
- 地址位数是128位(16个字节)
- 基本可以为每一粒沙子标记
按地址分类
A类B类C类,区别就是后面的主机号位数不一样
端口
每个软件运行的时候系统会自动分配端口,每一个重启的端口会变化
端口范围:0-65535
知名端口:0-1024(这是已经固定的,不会改变)
动态端口:1024-65535
TCP/IP协议
TCP/IP协议即是传输控制协议和因特网互联协议,是基于Internet最基本的协议,又名网络通讯协议,Internet互联网的基础,由网络层的IP协议和传输层的TCP协议组成。
一共有七层(现在一般说是四层):
如何创建套接字?
需要导入socket模块
socket(family=,type=)
- family是协议族
- type 是套接字类型,一共有两种分别是tcp(流失套接字,SOCK_DGRAM),
udp(数据报套接字,SOCK_STREAM)
udp发送数据
步骤:
创建套接字
发送、接受数据
关闭套接字
import socket
udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
family 协议族
type 套接字类型 tcp 流失套接字 udp 数据报套接字
# 发送数据/接受数据
while True:send_data = input('输入你要发送的数据:')udp_socket.sendto(send_data.encode('gbk'), ('192.168.0.115', 8080))# encode 是编码# decode 是解码if send_data == 'exit':break
# 关闭套接字
udp_socket.close()
udp接受数据
步骤:
创建套接字
绑定信息
接受数据
打印数据
关闭套接字
import socketdef main():# 创建套接字udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)# 绑定信息bind_addr = ('', 7880)udp_socket.bind(bind_addr)# 接受数据recv_data = udp_socket.recvfrom(1024)print(recv_data) # 打印是一个元组(数据,发送方的地址)# 关闭套接字udp_docket.close()if __name__ == '__main__':main()
案例——udp版聊天器
import socketdef send_data(udp_socket):send = input('请输入需要发送的数据:')udp_socket.sendto(send.encode('gbk'), ('192.168.0.115', 7875))def recv_data(udp_socket):recv = udp_socket.recvfrom(1024)print("发送ip:%s发送内容:%s" % (recv[1], recv[0].decode('gbk')))def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)udp_socket.bind(("", 7875))while True:send_data(udp_socket)recv_data(udp_socket)if __name__ == '__main__':main()
socket编程——upd(数据报套接字)相关推荐
- Socket编程实践(9) --套接字IO超时设置方法
引:超时设置3种方案 1. alarm超时设置方法 //代码实现: 这种方式较少用 void sigHandlerForSigAlrm(int signo) {return ; }signal(SIG ...
- Linux环境SOCKET编程1:套接字
一.socket运行过程 服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接.在这时如果有个客户端初始化一个Socket,然 ...
- Linux socket编程,对套接字进行封装
转自:http://www.cnblogs.com/-Lei/archive/2012/09/04/2670942.html 下面是对socket操作的封装,因为在Linux下写中文到了windows ...
- 【网络编程】Socket套接字;UDP数据报套接字编程;TCP流套接字编程
文章目录 1. 什么是网络编程 2. 网络编程中的基本概念 3. Socket套接字 4 UDP数据报套接字编程 4.1 客户端服务器交互流程 4.2 UDP版本的回显服务 4.3 英译汉服务 5. ...
- 网络编程学习笔记-套接字编程-socket
本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写 前置概念详见 本文目录 概念 基本TCP套接字编程 通信循环 半链接池 链接循环 udp协议 基于TCP协议实现远程执行客户端请 ...
- 网络编程【UDP数据报套接字编程】
目录 1.网络编程基础 1.1 为什么需要网络编程? 1.2 什么是网络编程 1.3 网络编程中的基本概念 2.Socket套接字 2.1 分类 3.UDP数据报套接字编程 3.1 DatagramS ...
- 1.3.1 数据报套接字编程
1.3 实现超链接 在网络应用过程中,特别是在Web程序中,超级链接用得非常普遍.其实使用VC技术,也可以实现超级链接功能.在本节的内容中,将介绍使用Visual C++ 6.0开发一个实现超级链接 ...
- python 图形化socket编程_Python黑帽编程2.8 套接字编程
Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...
- socket:数据报套接字
数据报套接字 一.什么是数据报套接字 二.基于流套接字的客户/服务器的工作流程 1.服务器 2.客户端 三.套接字接口 1.recvfrom()系统调用 2.sendto()系统调用 四.示例 一.什 ...
最新文章
- python多线程的使用(导入线程模块、创建子线程任务、启动子线程任务、获取当前执行的线程号)
- 重温目标检测--SSD
- react-native-webview禁止缩放
- POI异步导入Excel兼容xsl和xlsx
- vue --- [全家桶]vue-router
- cdatabase读取excel第一行数据_pandas读取excel数据并对重复数据进行标记或者删除
- android+完美的列表,android完美讲义.pdf
- 四、Python-元组
- ectouch 概述
- 资源 | 最新版区块链术语表(中英文对照)2019-1.14
- PMP学习笔记 第11章 项目风险管理
- java银行排队系统_java--面向对象(一个简单的银行排队系统)原理版
- 【书影观后感 五】你的名字
- 基于微信小程序实现番茄钟专注时间项目演示【附项目源码+论文说明】
- 标视界:值得您信赖的商标查询网
- Speedoffice(excel)如何利用MIN函数求最小值
- SoftMax函数,交叉熵损失函数与熵,对数似然函数
- javascript scrollbar滚动条相关属性
- SaaS电子病历系统源码
- c语言李白喝酒答案,李白嗜酒文言文答案