网络编程基础

一、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以二进制方式读  

 

posted @ 2020-05-09 13:17  hl爱编程  阅读(178)  评论(0)    收藏  举报