Python网络编程
发布日期:2021-05-14 21:58:28 浏览次数:16 分类:博客文章

本文共 25163 字,大约阅读时间需要 83 分钟。

Python������������

  • ���������C/S���������
  • ���������������
  • socket������

C/S������

C������������Client(���������������)���S���������Server(���������������)������������������������������������������C/S���������������������������������������������������������������������������

���������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������https://www.processon.com/view/5b0f5d79e4b068c2520a6497)

1.������������������������������������������������������������������������������������������������������������������������/���������������������������������

2.���������������������������������������������������������������������������(������)���������������������������������������

3.������������������

4.���������������������������������������������������������������������������������������������

5.������������������������������������������������������������������������(������)���������������������������������������������������������������������

socket������

������

���������������������������������������������������������������������������������������������������TCP/IP������������������������������������������������������������������������������������������������TCP/IP���������������������������������������������������������������������������������������socket������������������������������socket������������������������������������������������������TCP/IP������������������������������������������������������������������������������������������������������������������������������������������������������������������������

socket������

���������socket���

socket���������������TCP/IP������������������������������������������������������������������������������������socket������������������������������������������������TCP/IP������������������socket���������������������������������������������������������������������

socket���������()

socket���������Unix������Unix/Linux������������������������'���������������'������������������������open-->������write/read-->������close"������������������socket���������������������������������socket������������������������������������socket���������������������������������������/���IO���������������������

������������������������������������������������������IP������������������������������������������QQ������������word���������������������������������������QQ���������������������������������������������������IP������������������������������������������������������������������������qq������������������������������port���������������������������0-65535���������������������������������������������������������������������������������������������������������������������������������������������������������������������

������()

socket������������

���������socket���������������������������������������������socket������������������������������������������������������������������������������������

socket���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������

1.������������������������2.������������������������3.���������������������������������4.���������������������5.���������������������������������������

������������

1.������������������������2.������������������������������3.������������������4.say 'hi ������������������������������������~'5.������������ -->  ������������  --> ������������.......

���������������socket������

���������������socket���������������

1.���������������������������������������socket���������2.������������������������������������������IP+PORT���3.���������������������������������������������4.���������������������������������������������5.������������������������������������������������������������������

���������������socket������������

1.���������������������������������������socket���������2.���������������������������������connect ���������������IP���PORT���3.������������������4.say 'hi ������������������������������������~'���send���������������5.������������ -->  ������������  --> ������������.......

socket���������������������������������()

socket���������������

socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

family(socket������)

  • socket.AF_UNIX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������socket���������
  • socket.AF_INET������������AF_INET6���������ipv6��� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������AF_INET������������������������������Python������������������������������������������������������������������������������������������������������AF_INET

socket.type������

  • socket.SOCK_STREAM���for TCP
  • socket.SOCK_DGRAM���for UDP
  • socket.SOCK_RAW���������������������������������������������������ICMP���IGMP���������������������SOCK_RAW������������������SOCK_RAW������������������������IPv4������������������������������������������������������IP_HDRINCL������������������������������IP������
  • socket.SOCK_RDM���������������������UDP������������������������������������������������������SOCK_RAM���������������������������������������������������������������������������������������������������ICMP���������SOCK_RAM������������������������������������������������������������
  • socket.SOCK_SEQPACKET���������������������

proto = 0 ������������������������

fileno = None ������������������������

������������������������

  • s.bind()���������������������������������������������
  • s.listen()���������TCP������
  • s.accpet()���������������TCP���������������������������������������������������������

������������������������

  • s.connect()������������������TCP������������������
  • s.connect_ex()���connect()������������������������������������������������������������������������

���������������������������������

  • s.recv()���������������
  • s.send()������������������send���������������������������������������������������������������������������������������
  • s.sendall()������������������TCP������������������������������������send���sendall������������������������������������������������������������������������������������������send���������������
  • s.recvfrom()���������UDP������
  • s.getpeername()������������������������TCP������������������
  • s.close()������������������
  • socket.setblocking(flag)���True or False���������socket������������������
  • socket.getaddrinfo(host,port,family=0,type=0,proto=0,flags=0)������������������������������������
  • socket.getfqdn()���������������������������
  • socket.gethostbyname()���������������������IP������

socket������������

���������������������������������������������������������������������

# ���������1.���������������������������������������socket���������2.������������������������������������������������������������������������IP���������PORT���������3.���������������������������������listen���������������4.������������������accpet���������������������������5.���������������recv���send���������������������������������������6.���������������������������������������������������������close���7.������������������������������������������������# ���������1.���������������������������������������socket���������2.������������connect,���������������������IP���PORT���3.������������������send,recv���4.������������close���

���������������

import socket# 1.���������������������socket������phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 2.���������������IP���PORTphone.bind(('127.0.0.1',8082))# 3.���������������������������������������5������������������������������������������������������������������������������������phone.listen(5)print('starting.......')# 4.������������������������������������������������������������������������������������res = phone.accept()print(res)  # (
, ('127.0.0.1', 52690)) ������������������������������������������������������������������������������������������IP���������PORT# ������������������conn���addr���������������������������������������IP���PORTconn,addr = phone.accept()print(addr)# 5.������������������������������������recv(1024)������������������1024������������������������������������������������������1������������������������������1025������������������������������1024���������������������������������data = conn.recv(1024)print('������������������',data)# 6. ���������������������������������������������������send������������conn.send(data.upper())# 7.������������������conn.close()# 8.���������������phone.close()# ���������������������������������������������������������������������IP���PORT���������������������������������������������������������������# res = phone.accept()# print(res)

���������������

import socket# 1.������������socket������phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 2.������������������IP���PORT(���������)phone.connect(('127.0.0.1',8082))# 3.send���������������msg = input('>>>>>').strip()phone.send(msg.encode('utf-8'))# 4.recv������������������������������������������������������1KBdata = phone.recv(1024)print(data)# 5.������������phone.close()

���������������������������Python3���������������������������bytes������

���������������������������������������������

# ������������starting.......('127.0.0.1', 52885)������������������ b'admin'# ���������>>>>>admin  ���������������������������������������������b'ADMIN'

������������������

������������������������������������������������������������������������������������������������������������������������������������������������������hello���������������������hello��������������������������������������������������������������������������������������������� ������������������������������������������������

���������

import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,0)  # ���������������������������������������������������������������phone.bind(('127.0.0.1',8083))phone.listen(5)print('starting.......')conn,addr = phone.accept()print(addr)while True:    data = conn.recv(1024)    print('������������������',data)    conn.send(data.upper())conn.close()phone.close()���������������������������# 1.������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 2.���������������������������������������������������phone���������������������������������������������������������������������������������conn������������������������������������������������������������phone������������������������������������conn������������������������

���������

import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect(('127.0.0.1',8083))while True:    msg = input('>>>>>').strip()    phone.send(msg.encode('utf-8'))    data = phone.recv(1024)    print(data)phone.close()# ������������������������������������phone������������������������������������������������������

���������������������������������������������������������������������������while True������������������������������������������������

���������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

# ���������import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect(('127.0.0.1',8083))while True:    msg = input('>>>>>').strip()    if not msg:continue  # ������������������������������������������������    phone.send(msg.encode('utf-8'))    data = phone.recv(1024)    print(data)phone.close()

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

# ������������������������# ���������import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect(('127.0.0.1',8085))while True:    msg = input('>>>>>').strip()    print('send msg...')  # ���������msg������������    phone.send(msg.encode('utf-8'))    print('before recv msg')  # ������������������������    data = phone.recv(1024)    print('before print data')  # ������������������������������������    print(data)phone.close()# ���������������������������starting.......('127.0.0.1', 53353)������������������ b'admin'# ���������������������������>>>>>adminsend msg...before recv msgbefore print datab'ADMIN'>>>>>send msg...������������������������������������������������������������������before recv msg

������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

Traceback (most recent call last):  File "D:/py_study/day20-������������/1.py", line 20, in 
data = conn.recv(1024)ConnectionResetError: [WinError 10054] ���������������������������������������������������

���������������������������������������������������TCP������������������������TCP���������������������������������������������������������������������������������������������������������������������������������������������������

# ���������import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,0)  # ���������������������������������������������������������������phone.bind(('127.0.0.1',8085))phone.listen(5)print('starting.......')conn,addr = phone.accept()print(addr)while True:    try:        data = conn.recv(1024)        print('������������������',data)        conn.send(data.upper())    except ConnectionResetError:        breakconn.close()phone.close()# ���������import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.connect(('127.0.0.1',8085))while True:    msg = input('>>>>>').strip()    if not msg:continue    phone.send(msg.encode('utf-8'))    data = phone.recv(1024)    print(data)phone.close()

������SSH������

������������������������������������������������������������������������������������������������������os���subprocess���������������os.system���������������������������subprocess���������������������������������������

In [1]: import osIn [2]: res = os.system('ls')  # ������������������������������������������������������������������������������������anaconda-ks.cfg  apr-1.4.6  apr-1.4.6.tar.gz  apr-util-1.4.1  apr-util-1.4.1.tar.gz  httpd-2.4.7  httpd-2.4.7.tar.gz  ������������In [3]: print(res)  # ���������������������������������������������������0
import subprocessobj = subprocess.Popen('ls /tmp',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)# ������������������������������print(obj.stdout.read().decode('utf-8'))# ������������������������������print(obj.stderr.read().decode('utf-8'))������������������windows������������������������������������gbk������

���������������������������������������SSH���������������������������������������������

# ���������import socketimport subprocesssocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)socket.bind(('127.0.0.1',8880))socket.listen(5)print('starting...')conn,addr = socket.accept()while True:    cmd = conn.recv(1024)  # ������������    obj = subprocess.Popen(cmd.decode('utf-8'),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)   # subprocess���������������decode������    # obj.stdout.read()���������������GBK������������������������������GBK���������������������������������������������    stdout = obj.stdout.read()  # ������������������������������������������    stderr = obj.stderr.read()  # ������������������������������������������    print(len(stdout) + len(stderr))  # ���������������������������������    conn.send(stdout+stderr)  # ������������������conn.close()socket.close()# ���������import socketsocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)socket.connect(('127.0.0.1',8880))while True:    msg = input('>>>').strip()  # ������������������������������    if not msg:continue  # ������    socket.send(msg.encode('utf-8'))  # ���UTF-8������������    data = socket.recv(1024)      print(data.decode('gbk'))  # ���������gbk������������windows���������������socket.close()

������������������

# ���������������������starting...1009  # ������������������������1009���# ���������������������>>>ipconfigWindows IP ������������������������ ���������:   ������������  . . . . . . . . . . . . : ���������������������   ��������������� DNS ������ . . . . . . . : ������������������������ ������������* 1:   ������������  . . . . . . . . . . . . : ���������������������   ��������������� DNS ������ . . . . . . . : ������������������������ WLAN:   ��������������� DNS ������ . . . . . . . : hzdomain1.com   ������������ IPv6 ������. . . . . . . . : fe80::fca6:24d8:1890:c8a4%4   IPv4 ������ . . . . . . . . . . . . : 10.202.102.80   ������������  . . . . . . . . . . . . : 255.255.254.0   ������������. . . . . . . . . . . . . : 10.202.102.1������������������������ ������������* 2:   ��������������� DNS ������ . . . . . . . :    ������������ IPv6 ������. . . . . . . . : fe80::6560:ca5a:830a:ce86%20   IPv4 ������ . . . . . . . . . . . . : 192.168.137.1   ������������  . . . . . . . . . . . . : 255.255.255.0   ������������. . . . . . . . . . . . . : ������������������ ������������������ 2:   ������������  . . . . . . . . . . . . : ���������������������   ��������������� DNS ������ . . . . . . . :

���������������

# ���������starting...1009  # ���������ipconfig������������������������16226  # tasklist# ���������tasklist������������������ps aux������>>>tasklist������������                       PID ���������              ������#       ������������ ========================= ======== ================ =========== ============System Idle Process              0 Services                   0          8 KSystem                           4 Services                   0         24 KRegistry                        96 Services                   0     18,044 Ksmss.exe                       360 Services                   0        488 Kcsrss.exe                      532 Services                   0      1,720 Kwininit.exe                    640 Services                   0      1,252 Kcsrss.exe                      648 Console                    1      2,568 Kservices.exe                   712 Services                   0      5,864 Klsass.exe                      728 Services                   0      9,596 Ksvchost.exe                    844 Services                   0        396 Kfontdrvhost.exe                864 Services                   0         88 Ksvchost.���������������������tasklist���������������������������������������������������������������������ipconfig���������������������������������������������������1009���>>>ipconfigexe                    872 Services                   0     17,556 KWUDFHost.exe                   920 Services                   0      5,180 Ksvchost.exe                   1004 Services                   0     10,260 Ksvchost.exe                    292 Services                   0      6,140 Kwinlogon.exe                   896 Console                    1      3,728 Kfontdrvhost.exe               1068 Console                    1      8,024 Kdwm.exe                       1144 Console                    1     75,552 Ksvchost.exe                   1192 Services                   0     14,476 Ksvchost.exe                   1240 Services                   0      2,984 Ksvchost.exe                   1248 Services                   0      1,832 Ksvchost.exe                   1324 Services                   0      4,492 Ksvchost.exe                   1420 Services                   0      4,368 Ksvchost.exe                   1488 Services                   0     11,732 K

���������������������������������ipconfig������������������������������tasklist���������������������������15-16������������������������������������������������������������������������������������������������������������������������

������tasklist������������������������������������������������������1024������������������������1024���������������������������������������������������IO���������������������������������������������������������������������������������������������������������������������������recv(1024)������������������������������������������������������������ifconfig������������������

������������������������������������������������recv(1024)���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������recv���������������������������������������������������������������������������8192������������������������������������������������������������������

���������������������������������������������������������������������������������������������socket���������������������������������

������������������()

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������copy������������������������������������������������������������������������������������������������������������������������������������������������������������socket���������������������������������������������������������������������������������������������������������������������������������send���������������������������TCP socket������������������������������������������������TCP������������������������������������������������������������������������

������������������������TCP���

������������������K���K������������������������������������������������������K���K������������������������������������������������3K������������������������������������������������������������������������������������������������������������������������������������������STREAM������������������������������������������������������������������������TCP���������������������������������������������������������������������������

������������TCP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������

# ���������import socketimport subprocesssocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)socket.bind(('127.0.0.1',8801))socket.listen(5)print('starting...')conn,addr = socket.accept()print(addr)data = conn.recv(1024)print('data:',data)  # ������conn.send(data.upper())  # ���������������������conn.close()socket.close()# ���������import socketsocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)socket.connect(('127.0.0.1',8801))# ������������������������������������socket.send('hello'.encode('utf-8'))  socket.send('world'.encode('utf-8'))data = socket.recv(1024)print(data.decode('gbk'))socket.close()

������������������

# ���������starting...('127.0.0.1', 50506)data: b'helloworld'# ���������HELLOWORLD

������������

  • 1.TCP���transport control protocol������������������������ ������������������������������������������������������������������������������������������������������������������������socket������������������������������������������������������������������������������������������������������������������Nagle������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  • 2.TCP���������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������

上一篇:解决粘包问题
下一篇:python异常处理

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月05日 04时20分26秒