网络编程基础
一、UDP(不安全、简单)
1、ip地址:用来标记网络上的一台唯一台电脑
2、查看ip地址:linux用ifconfig命令
windows首先用win+R打开终端,输入命令ipconfig
linux命令可以用于unix,mac
3、端口号:即传送数据时,要传软件占用的端口
4、知名端口:0~1024不能随便占用
5、socket:用来完成网络通信的必备东西
6、创建一个UDP socket(udp套接字):
import socket
udp_socket = socket.socket(socket.AE_INET,socket.SOCK_DGRAM)
udp_socket.sendto("要发送的内容",(对方的ip和端口))
udp_socket.close
流程:
(1)创建套接字
(2)使用套接字收/发数据
(3)关闭套接字
7、windows使用编码方式为gbk,linux的编码方式为utf-8,所以在解码或者编码时要注意。解码用decode(),编码用encode()
8、为程序设置端口:local_port = (" ",想要设置的端口号),记得端口号不要设置为知名端口," "不写东西默认为本机的ip,不用写
9、.recvfrom(指定最多每次接收数据的个数):socket提供的udp的收数据方法
10、如果在编发送代码时,没有绑定自己的端口的话,那么系统会自动随机给你分配一个端口
二、TCP(安全、复杂、严格区分客户端和服务器)
1、客户端发送数据:
(1)创建套接字,tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
(2)连接服务器:tcp_socket.connect(("ip地址",端口地址))
(3)收发数据:tcp_socket.send(send_data.encode()),send_data为要发送的数据,收数据和udp一样
(4)关闭套接字:tcp_socket.close()
2、如果想要完成一个tcp服务器的功能,需要的流程:
(1)socket创建套接字
(2)bind绑定和port
(3)listen使套接字变为可以被动连接(.listen(128))
(4)accept等待客户端连接(当用户没有连接服务器时,处于堵塞状态,当用户连接服务器,会返回一个带有客户socket
和用户ip的元组)
(5)recv/send接收发送数据
可以用买手机模拟记忆:
(1)买手机
(2)插电话卡
(3)将电话设置为响铃状态
(4)等待别人的电话到来
例:tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建监听套接字,如果关闭那么整个服务器都会关闭。
tcp_server_socket.bind(("",指定服务器端口))
tcp_server.listen(128)
cliend_socket,cliendaddr = tcp_server_socket.accept()#cliend_socket为客户端的套接字,如果关闭那么就意味着不再为这个用户服务
cliend_data = cliend_socket.recv(1024)
print(cliend_data.decode("gbk"))
print(cliendaddr)
cliend_socket.send("--ok--")
tcp_server_socket.close()
cliend_socket.close()
3、if条件语句
if条件:条件可以是判断语句,数字,列表,元组等,只要不为空或者不为假就会执行。如果为空、None、Flase、0就不会执行
tcp注意点:

三、下载文件
1、with open("文件路径“) as f:
f.write(...)如果异常,那么。close任然会执行
f.close()
2、客户端下载步骤:
(1)创建套接字
(2)获取服务器ip和port
(3)连接服务器
(4)获取下载的文件名字
(5)将文件名字发送给服务器
(6)接收到文件数据
(7)保存接收到的数据到一个文件中
(8)关闭套接字
3、1024<=>1k 、 1024*1024<=>1M 、 1024*1024*1024<=>1G
4、open("文件名”,"wb") 以二进制方式写
rb以二进制方式读
本文来自博客园,作者:hl爱编程,转载请注明原文链接:https://www.cnblogs.com/hlprogrammer/p/12846607.html

浙公网安备 33010602011771号