zoukankan      html  css  js  c++  java
  • python socket练习

    服务器端

    #服务器端
    
    import socket
    server = socket.socket()
    server.bind(('localhost',6969))#绑定要监听的端口
    server.listen() #监听
    
    conn,address = server.accept() #等待接收数据 返回两个值,一个是对方的标记位,一个是对方的地址
    
    print(conn,address )
    data = conn.recv(1024) #接收数据,谁发数据给我就用谁的标记位接收
    print(data)
    conn.send(data.upper()) #发送数据,要发给谁就用谁的标记位
    
    server.close()
    #=========执行结果==========
    <socket.socket fd=312, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 50169)> ('127.0.0.1', 50169)
    b'hello world'
    

     客户端

    #客户端
    import socket
    
    client = socket.socket()#声明socket类型,同时生成socket连接对象
    
    client.connect(('localhost',6969)) 
    
    client.send(b'hello world')  #发送数据
    
    data = client.recv(1024)  #接收指定大小的字节
    print(data)
    client.close()
    #==========执行结果=========
    b'HELLO WORLD'
    

     如果要发送中文就必须要转成bytes类型,字符串通过encode()方法转出来的就是bytes类型。

    重新发送一条中文,服务器端代码不变,客户端代码转下编码重新发送。

    服务器端

    #服务器端
    
    import socket
    server = socket.socket()
    server.bind(('localhost',6969))#绑定要监听的端口
    server.listen() #监听
    
    conn,address = server.accept() #等待接收数据 返回两个值,一个是对方的标记位,一个是对方的地址
    
    print(conn,address )
    data = conn.recv(1024) #接收数据,谁发数据给我就用谁的标记位接收
    print(data)
    conn.send(data.upper()) #发送数据,要发给谁就用谁的标记位
    
    server.close()
    #=============执行结果=============
    <socket.socket fd=312, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 51032)> ('127.0.0.1', 51032)
    b'xe4xbdxa0xe5xa5xbd,xe4xb8xadxe5x9bxbd'
    

     客户端

    #客户端
    import socket
    
    client = socket.socket()#声明socket类型,同时生成socket连接对象
    
    client.connect(('localhost',6969))
    
    client.send('你好,中国'.encode("utf-8"))  #发送数据
    
    data = client.recv(1024)  #接收指定大小的字节
    print(data)
    print(data.decode()) #
    client.close()
    #=======执行结果============
    b'xe4xbdxa0xe5xa5xbd,xe4xb8xadxe5x9bxbd'
    你好,中国
    

     所有的数据传送接收必须用bytes类型。

  • 相关阅读:
    Ruby on rails3新手谈(1):Ruby on rails环境搭建
    更灵活,更易维护的WebHandler之通用webHandler编码方案(2)
    .Net Remoting之windows服务部署
    Ruby on rails3新手谈(2):简单的例子helloworld
    分组取最新记录的SQL
    验证日期的Javascript
    使用Javascript创建遮罩层并模拟Alert、Confirm对话框
    取得当前鼠标的X,Y坐标,及相关属性的介绍
    B/S结构系统中使用Session遇到的问题
    IE与FireFox的兼容性问题
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7444022.html
Copyright © 2011-2022 走看看