小编Tom*_*mmy的帖子

python socket.recv()方法如何知道消息的结尾?

假设我使用1024作为客户端套接字的缓冲区大小:

recv(1024)
Run Code Online (Sandbox Code Playgroud)

假设服务器要发送给我的消息包含2024个字节。我的套接字只能接收1024个字节。其他1000个字节又怎么了?

  1. recv方法是否会等待一定的时间(例如2秒)以等待更多数据进入并在此时间段后停止工作?(即,如果其余数据在3秒钟后到达,那么套接字将不再接收该数据吗?)

要么

  1. 接收到1024个字节的数据后,recv方法会立即停止工作吗?(是否会丢弃其他1000个字节?)

如果1.)是正确的……我有什么方法可以确定时间量,recv数据应该在返回之前等待,还是由系统确定?(即我可以告诉套接字在停止等待更多数据之前等待5秒吗?)

更新:假设,我有以下代码:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((sys.argv[1], port))
    s.send('Hello, world')
    data = s.recv(1024)
    print("received: {}".format(data))
    s.close()
Run Code Online (Sandbox Code Playgroud)

假设服务器发送的数据大小> 1024字节。我是否可以确定变量“ data”将包含所有数据(包括第1024个字节以外的数据)?如果不能确定该如何更改代码,以便始终可以确保变量“ data”将包含从服务器发送(一步或多步)的所有数据?

python sockets recv

6
推荐指数
1
解决办法
1万
查看次数

在hyperledger-composer中为关系数组添加关系

在我的hyperledger作曲家应用程序中,我有客户和顾问.客户对已添加到其"readAccessList"中的顾问具有读取权限.

以下是这两种参与者类型的模型:

participant Client identified by id {
  o String id
  o String name
  --> Consultant[] readAccessList optional
}

participant Consultant identified by id {
  o String id
  o String name
  o String text
}
Run Code Online (Sandbox Code Playgroud)

将顾问添加到客户端的readAccessList的事务定义如下:

transaction AddToReadableConsultantsOfClient {
  --> Client client
  --> Consultant[] newReadableConsultants
}
Run Code Online (Sandbox Code Playgroud)

此事务的事务处理器功能如下:

/**
 * transaction AddToReadableConsultantsOfClient
 * @param {org.comp.myapp.AddToReadableConsultantsOfClient} transaction
 * @transaction
 */
async function addToReadableConsultantsOfClient(transaction) {

    // Save the old version of the client:
    const clientOld = transaction.client;

    // Update the client with the …
Run Code Online (Sandbox Code Playgroud)

relationships hyperledger-composer

5
推荐指数
0
解决办法
419
查看次数

如何将输入字段的默认值绑定到变量?

单击我的Angular App的UI中的某个按钮时,将打开一个对话框,用户可以在其中更新他/她的个人信息。为了简单起见,我将以下代码限制为他/她的用户名。也就是说,我假设用户只能在对话框中更改其用户名。

打开对话框的代码如下:

openDialog() {

    this.dialog.open(UpdatePersonalDataComponent , {data: {
      firstName: this.firstName,
      username: this.username 
      }
    });

 }
Run Code Online (Sandbox Code Playgroud)

文件update-personal-data.component.ts如下所示:

import { Component, OnInit, Inject } from '@angular/core';
import { MAT_DIALOG_DATA } from '@angular/material';


@Component({
  selector: 'app-consultants-update-dialog',
  templateUrl: './consultants-update-dialog.component.html',
  styleUrls: ['./consultants-update-dialog.component.css']
})
export class UpdatePersonalDataComponent implements OnInit {


  constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }

  ngOnInit() {

  }

}
Run Code Online (Sandbox Code Playgroud)

目前,文件update-personal-data.component.html如下所示:

<form #f="ngForm" (ngSubmit)="onSubmit(f)" fxLayout="column" fxLayoutAlign="center center"> 
    <h1 mat-dialog-title>Hi, {{ data.firstName }}. Update your username below.</h1>
    <mat-dialog-content fxLayout="column" fxLayoutAlign="center">
        <mat-form-field>
          <input 
            matInput 
            ngModel 
            #userName="ngModel" 
            name="userName" …
Run Code Online (Sandbox Code Playgroud)

default-value input-field property-binding angular

4
推荐指数
4
解决办法
1万
查看次数

如何为 Angular 组件设置背景图片?

在我的角度应用程序中,我想为特定视图设置背景图像。

为此,我将以下内容添加到组件的 css 文件中:

body {
       background-image: url("../../../assets/images/backgroundImage.jpg");
   }
Run Code Online (Sandbox Code Playgroud)

然而,背景没有改变。

这是包含上面显示的 css 代码的文件的文件路径:

角度应用程序/src/app/users/profile/profile.component.css

...这是背景图像的文件路径:

角度应用程序/src/assets/images/backgroundImage.jpg


我也尝试过

body {
       background-image: url("assets/images/backgroundImage.jpg");
   }
Run Code Online (Sandbox Code Playgroud)

...但这导致编译期间出现警告并且也不起作用。

我究竟做错了什么?


我给了根元素类“root”,然后将以下内容放入 css 文件中:

.root {
   background-image: url("../../../assets/images/backgroundImage.jpg");
}
Run Code Online (Sandbox Code Playgroud)

...现在背景发生变化,但不是屏幕的整个垂直长度(下部保持白色):

在此输入图像描述

css url background-image angular

4
推荐指数
1
解决办法
2万
查看次数

角度材料表:排序不起作用

在我的Angular应用程序中(使用Angular Material)我有几个表.

奇怪的是,在一种情况下,排序工作,而在另一种情况下,它没有.

这是有效的表:

<table mat-table [dataSource]="dataSource" matSort>

  <ng-container matColumnDef="id">
    <th mat-header-cell *matHeaderCellDef> ID </th>
    <td mat-cell *matCellDef="let row"> {{row.id}} </td>
  </ng-container>

  <ng-container matColumnDef="firstName">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> First Name </th>
    <td mat-cell *matCellDef="let row"> {{row.firstName}} </td>
  </ng-container>

  <ng-container matColumnDef="lastName">
    <th mat-header-cell *matHeaderCellDef mat-sort-header> Last Name </th>
    <td mat-cell *matCellDef="let row"> {{row.lastName}} </td>
  </ng-container>

  <ng-container matColumnDef="viewProfile">
    <th mat-header-cell *matHeaderCellDef class="viewProfile"> Profile </th>
    <td mat-cell *matCellDef="let row" class="viewProfile">
      <button mat-icon-button (click)="openProfile(row.id)">
                <mat-icon aria-label="icon-button with a page-view icon">pageview</mat-icon>
              </button>
    </td>
  </ng-container>

  <tr …
Run Code Online (Sandbox Code Playgroud)

sorting html-table angular-material angular

3
推荐指数
2
解决办法
5660
查看次数

&lt;apply-templates/&gt; vs &lt;apply-templates select="..."/&gt; 在 XSLT 中

查看地址下的 XSLT 代码http://www.w3schools.com/xml/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog_apply ... 下面你会找到这段代码的第一部分(也是我的问题的决定性部分) ):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>  
<xsl:apply-templates/>  
</body>
</html>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

如果您现在只更改行

<xsl:apply-templates/> 
Run Code Online (Sandbox Code Playgroud)

<xsl:apply-templates select="cd"/>
Run Code Online (Sandbox Code Playgroud)

转换不再起作用......(代码现在如下所示:)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>  
<xsl:apply-templates select="cd"/>  <!--ONLY LINE OF CODE THAT WAS CHANGED-->
</body>
</html>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么更改会破坏代码?在我看来,这两种情况的逻辑是一样的:

  1. 应用匹配“cd”的模板
  2. 内部模板“cd”应用其他两个模板(“标题”+“艺术家”)

更新:

整个xslt代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>  
  <xsl:apply-templates/>  
  </body>
  </html>
</xsl:template>

<xsl:template match="cd">
  <p> …
Run Code Online (Sandbox Code Playgroud)

xslt apply-templates

0
推荐指数
1
解决办法
4268
查看次数

Angular 应用程序中无法访问资源文件夹中的图像

这是我的 angular6 应用程序的配置文件结构:

在此输入图像描述

Client.component.html 应该显示图像“defaultProfilePic.png”。

所以它包含以下代码行:

<img [src]="url"  width="220" height="200">
Run Code Online (Sandbox Code Playgroud)

Client.component.ts 包含以下代码行:

private url = "../asset/images/defaultProfilePic.png";
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这不起作用。有人知道为什么会这样吗?

image path angular

0
推荐指数
1
解决办法
7959
查看次数