网络编程

requests库

  1. 使用python 下载图片

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from threading import Thread
    import requests

    class Download(Thread):
    def __init__(self, url):
    super().__init__()
    self.__url = url

    def run(self):
    fileName = self.__url[self.__url.rfind('/')+1:] # 获取文件名,从左一个/开始后面的
    resp = requests.get(self.__url)
    with open(fileName, "wb") as f:
    f.write(resp.content)

    def main():
    Download(r"https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/others/y/%E5%A3%81%E7%BA%B8.png").start()


    main()

TCP套接字

套接字的分类

  1. TCP套接字(流套接字)
  2. 数据报套接字
  3. 原始套接字

TCP套接字

  1. 端口

    1024一下的是著名服务端口

多并发通信

server.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from http import server
from socket import socket,SOCK_STREAM,AF_INET
from datetime import datetime
import socketserver
from threading import Thread
import time

from numpy import add

class Server():
def __init__(self):
self.server=socket(family=AF_INET,type=SOCK_STREAM)
self.server.bind(('192.168.211.195',35555))
self.server.listen(512)
print("begin.....")

def server_connet(self):
num=0
while True:
client,addr=self.server.accept()
num+=1
print(f"现在有{num}个client")
Thread(target=self.client_session,args=(client,addr))


def client_session(self,client: socket,addr):
print(f"{addr} 连接到服务器")
recv_message=client.recv(1024).decode('utf-8')
print(f"client{client} time :{datetime.now()} 发来一条信息:{recv_message}")


def main():
server=Server()
server.server_connet()

if __name__=="__main__":
main()


client.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from socket import socket,SOCK_STREAM,AF_INET
from time import sleep

def client():
client=socket()
client.connect(("192.168.211.195",35555))
send_message=f"august nihao!".encode('utf-8')
client.send(send_message)
client.close()

for i in range(0,50):
client()
sleep(1)

UDP 套接字

UDP无需建立连接就可以发送信息

并且直需要在开启socket的时候使用不同的网络流就可以了

udp是SOCK_DGRAM

然后发送数据使用sendto()

接收信息使用recvfrom()

client


网络编程
https://tsy244.github.io/2023/10/30/python/网络编程/
Author
August Rosenberg
Posted on
October 30, 2023
Licensed under