socket模块和粘包现象
发布日期:2021-05-15 02:09:11 浏览次数:4 分类:博客文章

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

������Socket���������������

Socket���������������������������������������TCP/IP���������������������������������������������������������������

Socket������������������������������������������������������������������������������������������������������������������

1������������������������������������TCP���UDP���������������

TCP���Transmission Control Protocol���������������������������������������eg:������������������������������������������������������������&������������������������������������������TCP������������Web���������������������������������

UDP���User Datagram Protocol���������������������������������������������������������������������������������������������������������������������������������������������(���������)���������������������������������������������������UDP������������������������ (DNS)���������������IP������(VoIP)���

������TCP������������Socket

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

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

���������

import socket���sk = socket.socket()            # ���������������sk.bind(('127.0.0.1', 4444))    # ���������������������������sk.listen()                     # ������������count, addr = sk.accept()       # ������������������������count������client������server���������������������addr������client���IP������msg = count.recv(1024)          # ���������������������������������������1024���������count.send(b'hi')               # ���������������������������������������������������bytes���������������print(msg)          # ������������������count.close()       # ������������������������sk.close()          # ������������������������

���������

import socket���sk = socket.socket()                # ���������������sk.connect(('127.0.0.1', 4444))     # ������������server���sk.send(b'hello')           # ������������msg = sk.recv(1024)         # ������������print(msg)          # ���������������������sk.close()          # ������������

sk������>���������������IP���������

count������>������������������������IP������������������������������������������IP���������

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

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

import socket���sk = socket.socket()sk.bind(('127.0.0.1', 4444))sk.listen()������while True:         # ���������������������������������    count, addr = sk.accept()    count.send('������������'.encode('utf-8'))          # ���������������������������������������        while True:     # ������������������������������������������        msg1 = count.recv(1024).decode('utf-8')   # ������������������������������������������        if msg1.upper() == 'Q': break     # ������������������������������������������������������������������        print(msg1)                       # ������������������������������        msg2 = input('>>')                # ���������������������������������        count.send(msg2.encode('utf-8'))  # ������������        if msg2.upper() == 'Q': break     # ���������������q���������������������������������������������������    count.close()   # ���������������������������������������������������
���������

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

import socket���sk = socket.socket()sk.connect(('127.0.0.1', 4444))msg3 = sk.recv(1024).decode('utf-8')    # ������������������������������������������������������������print(msg3)     # ������������while True:     # ������������������������������    msg2 = input('>>')                  # ���������������������������������    sk.send(msg2.encode('utf-8'))       # ���������������������������    if msg2.upper() == 'Q': break       # ���������������������������������������    msg1 = sk.recv(1024).decode('utf-8')    # ���������������������    if msg1.upper() == 'Q': break       # ���������������������������������������    print(msg1)���sk.close()      # ������������������������close������������
���������

������UDP������������Socket

udp���������������������������������������������������������������������������������������������

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

���������

import socketsk = socket.socket(type=socket.SOCK_DGRAM)  # ���������������sk.bind(('127.0.0.1', 4444))        # ������������������������������������        count, addr = sk.recvfrom(1024)     # ������������������������print(count.decode('utf-8'))        # ������������������������������msg = input('>>')                   # ������������������sk.sendto(msg.encode('utf-8'), addr)    # ������������ sk.close()      # ���������������
���������

���������

import socketsk = socket.socket(type=socket.SOCK_DGRAM)      # ���������������server = ('127.0.0.1', 4444)                    # ���������������������������������������msg = input('>>')sk.sendto(msg.encode('utf-8'), server)          # ���������������������������������������msg1 = sk.recv(1024)               # ������������������������print(msg1.decode('utf-8'))sk.close()                          # ������������
���������

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

���������

import socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1', 4444))���while True:     # ���������������������������������������    count, addr = sk.recvfrom(1024)         # ���������������������������������������������������������    print(count.decode('utf-8'))            # count���������������������addr������������������������    msg = input('>>')    sk.sendto(msg.encode('utf-8'), addr)    # ������������������������������������������������������������
���������

���������

import socketsk = socket.socket(type=socket.SOCK_DGRAM)server = ('127.0.0.1', 4444)���while True:         # ���������������������������������    msg = input('>>')    if msg.upper() == 'Q': break            # ���������������������������������������    sk.sendto(msg.encode('utf-8'), server)  # ������������    msg1 = sk.recv(1024).decode('utf-8')    # ������������    if msg1.upper() == 'Q': break           # ������������������������������������    print(msg1)���sk.close()      # ������������������������������������������
���������

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

������������������������tcp������������������tcp���������������������������������������������������������������������������

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

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

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

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

���������

1���������������������������������������������������������������������������������������tcp���������������������������������

2���������������������������������������������������������������������������������������������������������������������������������������

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

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

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

������������������struct���������

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

Struct���������

������������������������������������������������������������������bytes���������������������������

import structcount = 452156new_count = struct.pack('i', count)print(new_count)���# ������b'<\xe6\x06\x00'

������struct������������������������������������������������������������������������4���������������������������������������������������������������������������

��������� ���������
���������struct������������������������4������ ���������4���������������������struct���������������������������������������������
��������������� ���������������������������

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

import socketimport struct���sk = socket.socket()sk.bind(('127.0.0.1', 4444))sk.listen()���count, addr = sk.accept()���# ���������������������������������������������������������������������������������msg3 = struct.unpack('i', count.recv(4))[0]���# ���������������������������������������������������������������������������������������msg4 = count.recv(msg3).decode('utf-8')print(msg4)���msg1 = input('>>')���# ���������������������������������������������������������������bytes������������������������������msg2 = struct.pack('i', len(msg1.encode('utf-8')))count.send(msg2)���# ���������������������count.send(msg1.encode('utf-8'))���# ������������������count.close()sk.close()
���������

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

import socketimport struct���sk = socket.socket()sk.connect(('127.0.0.1', 4444))���msg1 = input('>>')���# ���������������������������������������������������������������bytes������������������������������msg2 = struct.pack('i', len(msg1.encode('utf-8')))sk.send(msg2)���# ���������������������sk.send(msg1.encode('utf-8'))���# ���������������������������������������������������������������������������������msg3 = struct.unpack('i', sk.recv(4))[0]���# ���������������������������������������������������������������������������������������msg4 = sk.recv(msg3).decode('utf-8')print(msg4)���# ������������������sk.close()
���������

 

上一篇:socketserver实现并发,验证客户端的合法性
下一篇:前端小白学习------html进阶篇-高级标签

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月07日 17时23分49秒