zoukankan      html  css  js  c++  java
  • 22 网络编程--TCP和UDP实现聊天例子

    1、TCP简单的一次对话,单通信

    客户端:

    import socket
    HOST = 'localhost'
    PORT = 50006
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect((HOST,PORT))
    client.sendall(b'hello,python')
    data = client.recv(1024)
    print('Received',data)

    服务端:

    import socket
    HOST = ''
    PORT = 50006
    sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock_server.bind((HOST,PORT))
    sock_server.listen(1)
    conn,addr = sock_server.accept()
    
    while True:
        data =conn.recv(1024)
        if not data:break
        conn.send(data)

    2、循环收发数据,单通信(TCP)

    客户端:

    import socket
    HOST = 'localhost'
    PORT = 50006
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect((HOST,PORT))
    while True:
        cmd = input('>>').strip()
        if not cmd:break
    
        client.send(cmd.encode('utf-8'))
        data = client.recv(1024)
        print('Received',data.decode('utf-8'))

    服务端:

    import socket
    HOST = ''
    PORT = 50006
    sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock_server.bind((HOST,PORT))
    sock_server.listen(1)
    conn,addr = sock_server.accept()
    
    while True:
        data =conn.recv(1024)
        if not data:break
        conn.send(data)

    3、双方都说话(TCP)

    客户端:

    import socket
    HOST = 'localhost'
    PORT = 50000
    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    client.connect((HOST,PORT))
    while True:
        cmd = input('>>').strip()
        if not cmd:break
        client.send(cmd.encode('utf-8'))
    
        data = client.recv(1024)
        print('Received',data.decode('utf-8'))

    服务端:

    import socket
    HOST = ''
    PORT = 50000
    sock_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock_server.bind((HOST,PORT))
    sock_server.listen(1)
    
    
    while True:
        conn, addr = sock_server.accept()
        while True:
            data =conn.recv(1024)
            print(f"收到客户端的的数据:>{data.decode('utf-8')}")
            if not data:break
            response = input('回复客户端>>').strip()
            conn.send(response.encode('utf-8'))

    4、基于UDP协议实现

    客户端:

    import socket
    ip_port = ('127.0.0.1',9000)
    BUFSIZE = 1024
    udp_client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    while True:
        MSG = input('>>').strip()
        udp_client.sendto(MSG.encode('utf-8'),ip_port)
        back_msg,addr = udp_client.recvfrom(BUFSIZE)
        print(back_msg.decode('utf-8'))

    服务端:

    import socket
    ip_socket =('127.0.0.1',9000)
    BUFSIZE = 1024
    udp_server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    udp_server.bind((ip_socket))
    
    while True:
        msg,addr = udp_server.recvfrom(BUFSIZE)
        print(msg.decode('utf-8'),addr)
    
        response = input('>>').strip()
        udp_server.sendto(response.encode('utf-8'),addr)
  • 相关阅读:
    高性能 HTML5 地铁样式的应用程序中的内容
    微软披露更多ARM Win8细节
    下一代互联网搜索的前沿:意图、知识与云
    使用 Sphinx 更好地进行 MySQL 搜索使用 Sphinx 进行非全文本搜索
    如何加快数模计算以及如何解决数模计算的收敛性问题
    Google App Engine正式支持Python 2.7
    ASP.NET MVC模型绑定
    给 MySQL 增加 Sequence 管理功能
    使用 Rational Build Forge 自动化 IBM Cloud 上的构建和发布过程
    Windows Phone 8基于WinRT?
  • 原文地址:https://www.cnblogs.com/foremostxl/p/9664765.html
Copyright © 2011-2022 走看看