zoukankan      html  css  js  c++  java
  • socket套接字

    Socket

    1.什么是Socket

    ​ socket是一个模块,可以写一套c/s架构的套接字

    2.为甚要使用Socket

    ​ socket套接字会封装好各层协议的工作

    ​ 好处:

    ​ 可以节省开发成本。

    3.如何使用

    ​ import scoket

    注意:客户端与服务端必须遵循:

    ​ 一端send 另一端recv

    ​ 不能两端同时send或recv

    初始socket套接字

    # 服务端*********************************
    import socket
    
    server=socket.socket()
    
    #绑定(主机,端口号)到套接字
    server.bind(('127.0.0.1',9527))
    
    #开始TCP监听
    server.listen(5)#listen(5)半连接池 设置等待程序个数
    
    #被动接受TCP客户的连接,(阻塞式)等待连接的到来
    # conn: 相当于服务端往客户端挖的管道
    conn,addr=server.accept()
    print(addr)
    
    data=conn.recv(1024).decode('utf-8')
    print(data)
    
    conn.send('我不好'.encode('utf-8'))
    
    conn.close()
    
    server.close()
    
    # 客户端*************************************
    import socket
    
    client=socket.socket()
    
    #主动初始化TCP服务器连接
    # client: 相当于客户端往服务端挖的管道
    client.connect(('127.0.0.1',9527))
    
    client.send('你好'.encode('utf-8'))
    
    data=client.recv(1024).decode('utf-8')
    print(data)
    
    
    # 关闭连接
    client.close()
    

    循环通信套接字

    # 服务端
    import socket
    
    server=socket.socket()
    
    #绑定(主机,端口号)到套接字
    server.bind(('127.0.0.1',9527))
    
    #开始TCP监听
    server.listen(5)#listen(5)半连接池 设置等待程序个数
    
    #被动接受TCP客户的连接,(阻塞式)等待连接的到来
    conn,addr=server.accept()
    print(addr)
    while True:
        data=conn.recv(1024).decode('utf-8')
        print(data)
    
        if data=='q':
            break
    
        send_msg=input('server--->client').encode('utf-8')
        conn.send(send_msg)
    
    conn.close()
    
    server.close()
    
    # 客户端
    import socket
    
    client=socket.socket()
    
    #主动初始化TCP服务器连接
    client.connect(('127.0.0.1',9527))
    while True:
        send_msg=input('client--->srevre:').encode('utf-8')
        client.send(send_msg)
        if send_msg=='q':
            break
    
        data=client.recv(1024).decode('utf-8')
        print(data)
    
    client.close()
    

    服务端多个客户端

    # 服务端
    import socket
    
    server=socket.socket()
    
    #绑定(主机,端口号)到套接字
    server.bind(('127.0.0.1',9527))
    
    #开始TCP监听
    server.listen(5)#listen(5)半连接池 设置等待程序个数
    while True:
        #被动接受TCP客户的连接,(阻塞式)等待连接的到来
        conn,addr=server.accept()
        print(addr)
        while True:
            try:
    
                data=conn.recv(1024).decode('utf-8')
                print(data)
    
                # mac和linux系统bug: b''
                if len(data) == 0:
                    continue
    
                if data=='q':
                    break
    
    
                conn.send(data.encode('utf-8'))
    
            except Exception as e:
                print(e)
                break
        conn.close()
    
    server.close()
    
    # 客户端
    import socket
    
    client=socket.socket()
    
    #主动初始化TCP服务器连接
    client.connect(('127.0.0.1',9527))
    while True:
        send_msg=input('client--->srever:').encode('utf-8')
    
        client.send(send_msg)
        if send_msg=='q':
            break
    
        data = client.recv(1024).decode('utf-8')
        print(data)
    
    client.close()
    
  • 相关阅读:
    Statistics Report for pid 21058 on 1wt.eu
    Wget下载终极用法和15个详细的例子
    Importing fabric into your own scripts
    Introduction to Build Profiles
    SSH Programming with Paramiko | Completely Different
    maven repository research webpage
    geek cn tech
    Nginx + Tomcat + Session学习 ﹎敏ō 博客园
    MonoRail 简介
    Linux 中出现的bash: syntax error near unexpected token `
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/12592423.html
Copyright © 2011-2022 走看看