个人笔记——Python网络编程

本文详细介绍了Python的网络编程基础知识,包括通信信息结构、端口、socket概念和使用,重点讲解了UDP和TCP协议的区别及应用。通过实例展示了如何创建UDP聊天器和TCP文件下载器,涉及客户端和服务器的构建流程。
摘要由CSDN通过智能技术生成

基本概念

通信信息的基本结构

dest ip:目的Ip
src ip:源ip
dest port:目标端口
src port:源端口
content:信息内容

端口

在linux系统中,端口可以有65536(2**16)个,端口号0~65535
如果一个程序需要收发网络数据,就需要有端口号

知名端口

即众所周知的端口号,范围从0到1023
例如:

88端口分配给HTTP服务
21端口分配给FTP服务

socket

概念

简称“套接字”,是进程间通信的一种方式,能实现不同主机间的进程间通信

python的socket模块

import socket
socket.socket(AddressFamily, Type)

第一个参数一般使用IPv4地址,第二个则根据具体需求填写udp/tcp

使用流程:
1.创建套接字
2.使用套接字收发数据
3.关闭套接字

例:
创建一个tco socket(tcp套接字):

imoprt socket

# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 这里使用套接字的功能

# 不用的时候,关闭套接字
s.close()

创建一个udp socket(tcp套接字):

imoprt socket

# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 这里使用套接字的功能

# 不用的时候,关闭套接字
s.close()

注意:在Ubuntu中使用终端时,可能虚拟机的网络和电脑本身的ip不在一个网络下,此时可以将虚拟机的网络调整至桥接,然后在终端输入

sudo dhclient

就可以重新分配ip地址,等待一会儿即可

udp

用socket发送数据

在使用socket.sendto()发送数据时,不能传递字符串,只能传递bite格式,有两种解决方式:
1.在字符串前加“b”,如:b"哈哈哈哈"
2.使用编码转化,如string = “哈哈哈哈”, string.encode(“utf-8”)
完整例子:

import socket

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定本地端口
    udp_socket.bind(("", 7890))  # 如果不绑定的话,每次发送计算机都会分配随机端口
	while True:
		send_data = input("请输入要发送的数据:")
	    # udp_socket.sendto(b"hahahah", 对方的ip以及port)   b"hahahah"是将str转换成bite
	    # udp_socket.sendto(b"hahahah", ("192.168.33.53", 8080)) 方法一
	    udp_socket.sendto(send_data.encode("utf-8"), ("192.168.33.53", 8080))  # 方法二

    # 关闭套接字
    udp_socket.close()


if __name__ == "__main__":
    main()

用socket接收数据

接收数据的关键在于确定端口号
需要使用socket.bind()方法
使用流程:
1.创建套接字
2.绑定本地自己的信息
3.接收数据
4.关闭套接字

例:

import socket

def main():
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定一个本地信息
    local_addr = ("", 7788)  # 设置本地地址和端口号,ip一般不用写,默认本机
    udp_socket.bind
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值