zoukankan      html  css  js  c++  java
  • python_网络编程socket(TCP)

    服务端:

    import socket
    sk = socket.socket()    #创建对象
    sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  #避免服务器重启时报address already in use错误
    sk.bind(('127.0.0.1',8877))     #把地址绑定到套接字(ip地址,端口号)
    sk.listen()     #监听链接
    conn,addr = sk.accept()     #接受客户端链接
    ret = conn.recv(1024)       #接受客服端信息(数据长度)
    print(ret)      #打印客户端信息
    conn.send(b'hi')    #向客户端发送星系(必须是bytes类型)
    conn.close()    #关闭客户端连接
    sk.close()      #关闭服务器套接字

    客户端:

    import socket
    sk = socket.socket()      #创建对象
    sk.connect(('127.0.0.1',8877))  #连接服务器(ip地址,端口号)
    sk.send(b'hello')      #向服务器发送信息(必须是bytes类型)
    
    ret = sk.recv(1024)     #接收信息(数据大小)
    print(ret)      #打印信息
    sk.close()      #关闭对象

      有收必有发,收发必相等,send和rexv必须是对应的

        send  -----  recv

        send  -----  recv

        recv  -----  send

    传递中文:

    # 服务端
    # 接收中文
    ret = conn.recv(1024).encode('utf-8')
    print(ret) #打印
    # 发送中文
    conn.send(bytes('七点半',encoding='utf-8'))
    
    # 客户端
    # 发送中文
    sk.send(bytes('几点了'.encode('utf-8')))
    # 接收中文
    ret = sk.recv(1024).encode('utf-8')
    print(ret)  #打印

    实例:聊天

      服务端:

    import socket
    sk = socket.socket()    #创建对象
    sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  #避免服务器重启时报address already in use错误
    sk.bind(('127.0.0.1',8877))     #把地址绑定到套接字(ip地址,端口号)
    sk.listen()     #监听链接
    conn,addr = sk.accept()     #接受客户端链接
    
    while True:
        ret = conn.recv(1024).decode('utf-8')
        print(ret)
        if ret == 'bye':
            conn.send(b'bye')
            break
        info = input('>>>')
        conn.send(bytes(info,encoding='utf-8'))
    
    conn.close()    #关闭客户端连接
    sk.close()      #关闭服务器套接字

    客户端:

    import socket
    sk = socket.socket()      #创建对象
    sk.connect(('127.0.0.1',8877))  #连接服务器(ip地址,端口号)
    
    while True:
        info = input('>>>')
        sk.send(bytes(info,encoding='utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        print(ret)
        if ret == 'bye':
            sk.send(b'bye')
            break
    
    
    sk.close()      #关闭对象
  • 相关阅读:
    《20171122-构建之法:现代软件工程-阅读笔记》
    课后作业-阅读任务-阅读提问-5
    结队-贪吃蛇-项目进度
    《团队-爬取豆瓣Top250电影-团队-阶段互评》
    zip相关知识梳理(一)
    C++入职学习篇--代码规范(持续更新)
    C++入职学习篇--新员工入职(持续更新)
    Node.js学习之TCP/IP数据通讯
    Node.js之操作文件系统(二)
    Node.js之操作文件系统(一)
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11688824.html
Copyright © 2011-2022 走看看