Python socket编程
1、IP地址简介
目的:用来标记网络上的一台电脑
windows和Linux查看网卡信息
Linux中 ifconfig
windows中 ipconfig
IP地址的分类
端口
端口分类
1.1 知名端口(well known ports)
80端口分配给HTTP服务
21端口分配给FTP服务
知名端口的范围是从0到1023
1.2 动态端口
动态端口的范围是从1024-65535
2、socket简介
2.1 TCP/IP协议
TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
TCP/IP协议
TCP/IP网络模型四层模型从根本上和OSI七层网络模型是一样的,只是合并了几层
2.2 socket
socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。白话说,socket就是两个节点为了互相通信,而在各自家里装的一部’电话’。
2.2.1 socket的使用
1.创建套接字ipv4(socket.AF_INET),udp套接字(socket.SOCK_DGRAM )
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
2.使用套接字收/发数据
udp_socket.sendto(send_data.encode(‘gbk’),(ipaddr,8888))
3.关闭套接字
udp_socket.close()
2.3 udp发送与接收程序
2.3.1 udp发送数据
#创建套接字
#family = AF_INET, 协议族 AF_INET ipv4
#套接字类型 type = UDP(数据报套接字 SOCK_DGRAM)、TCP(流式套接字 SOCK_STREAM)
#AF_INET = 2
#AF_INET6 = 23
import socket
def main():
#创建一个udp套接字
# ipaddr = '192.168.2.119'
# ipaddr = '127.0.0.1'
ipaddr = 'localhost'
send_data = 'python'
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_socket.sendto(send_data.encode('gbk'),(ipaddr,8888))
udp_socket.close()
if __name__ == '__main__':
main()
接收数据测试工具:NetAssist.exe
使用while循环,时刻处于数据发送状态
1 创建套接字
2 发送数据
3 关闭套接字
def main():
#1、创建一个udp套接字
ipaddr = '192.168.2.119'
# ipaddr = '127.0.0.1'
# ipaddr = 'localhost'
# send_data = '123'
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#""默认代表本机ip
bind_str = ("",8080)
udp_socket.bind(bind_str)
#发送数据
while True:
send_data = input('请输入发送内容:')
if send_data == 'exit' or send_data == 'quit':
break
udp_socket.sendto(send_data.encode('gbk'),(ipaddr,8888))
udp_socket.close()
if __name__ == '__main__':
main()
2.3.2 udp接收数据
1 创建套接字
2 绑定本地信息(IP和端口)
3 接收数据
4 打印数据
5 关闭套接字