小编Jue*_*gen的帖子

从套接字读取:是否保证至少获得x个字节?

我有一个罕见的错误似乎发生在读取套接字.

看来,在读取数据时,有时我只得到1-3个大于此数据包的字节.

正如我从管道编程中学到的那样,只要发送方提供足够的数据,我总是得到至少512个字节.

此外,我的发送者在传输任何内容的时候至少传输> = 4字节 - 所以我认为在传输的开始(!!)中一次只能接收4个字节.

在99.9%的情况下,我的假设似乎有......但是当收到的字节少于4个字节时,确实很少见.在我看来,为什么网络系统应该这样做呢?

有人知道更多吗?

这是我使用的阅读代码:

mySock, addr = masterSock.accept()
mySock.settimeout(10.0)
result = mySock.recv(BUFSIZE)
# 4 bytes are needed here ...
...
# read remainder of datagram
...
Run Code Online (Sandbox Code Playgroud)

发送方通过一次发送调用发送完整的数据报.

编辑:整个过程都在localhost上工作 - 因此不涉及复杂的网络应用程序(路由器等).BUFSIZE至少为512,发送方至少发送4个字节.

python sockets network-protocols

5
推荐指数
3
解决办法
5707
查看次数

ASP.NET日期和时间选择器?

我正在使用ASP.NET 2.0和SQL Server 2005.我希望我的用户选择日期和时间,然后将这些值保存到数据库中.在VS中,我可以使用Calendar控件来获取日期,但是对于处理用户选择的日期加上用户还必须从控件中选择的时间来说,这是一个很好的时间.

提前致谢!!

c# asp.net

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

C#lambda,分配局部变量vs返回数据


在C#中,lambda可以访问局部变量,也可以返回一些数据.

那么,哪种情况更好呢?

int num;
Func<int> func = ()=>{return 10;}
num = func();
Run Code Online (Sandbox Code Playgroud)

VS

int num;
Action action = ()=>{num = 10;}
Run Code Online (Sandbox Code Playgroud)

我认为,表现是不同的.哪个更好?



更新(我不知道如何使用StackOverflow)

我的代码在这里.

ErrorCode errorCode;
errorCode = DatabaseUtility.Read<ErrorCode>(
    conn,
    DatabaseUtility.CreateSelectQuery(....),
    reader =>
    {
        if(reader.Read())
            return ErrorCode.None;

        return ErrorCode.InvalidParam;
    });
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我可以这样做.

ErrorCode errorCode;
DatabaseUtility.Read(
    conn,
    DatabaseUtility.CreateSelectQuery(....),
    reader =>
    {
        if(reader.Read())
            errorCode = ErrorCode.None;
        else
            errorCode = ErrorCode.InvalidParam;
    });
Run Code Online (Sandbox Code Playgroud)

而且,这是方法定义.

public static class DatabaseUtility
{
    public static Read<T>(
        MySqlConnection conn,
        string query,
        Func<MySqlDataReader, T> callback);
}
Run Code Online (Sandbox Code Playgroud)

c# lambda

5
推荐指数
1
解决办法
817
查看次数

使用ASP.NET在加载时更改GridView中的值

我有一个GridView,它可以很容易地填充来自SQL数据库的数据.现在我想替换我的一列中的值,就像这样......

如果c04_oprogrs值为1,则在GridView中显示Take.

如果c04_oprogrs值为2,则在GridView中显示Available.

我必须更改哪些代码才能更改为我的代码以显示新值.

我的网格

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                Height="281px" Width="940px" 
                Font-Size="X-Small" AllowPaging="True" 
                onpageindexchanging="GridView1_PageIndexChanging">
                <Columns>
                    <asp:BoundField DataField="c04_oprogrs" HeaderText="Order Progress" 
                        SortExpression="c04_oprogrs" />
                    <asp:BoundField DataField="c04_orderno" HeaderText="Order No." 
                        SortExpression="c04_orderno" />
                    <asp:BoundField DataField="c04_orddate" HeaderText="Date of Order" 
                        SortExpression="c04_orddate" DataFormatString="{0:d/MM/yyyy}" />
                    <asp:BoundField DataField="c04_ordval" HeaderText="Order Value" 
                        SortExpression="c04_ordval" DataFormatString="{0:R#,###,###.00}" />
                    <asp:BoundField DataField="c04_delval" HeaderText="Delivered Value" 
                        SortExpression="c04_delval" DataFormatString="{0:R#,###,###.00}" />
                    <asp:BoundField DataField="c04_invval" HeaderText="Invoice Value" 
                        SortExpression="c04_invval" DataFormatString="{0:R#,###,###.00}" />
                    <asp:BoundField DataField="c04_orddesc" HeaderText="Order Description" 
                        SortExpression="c04_orddesc" >
                        <ControlStyle Width="300px" />
                    </asp:BoundField>
                </Columns>
            </asp:GridView>
Run Code Online (Sandbox Code Playgroud)

我的页面加载

SqlConnection myConnection;
        DataSet dataSet = new DataSet(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview

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

android apk文件安装

我想在G1设备中安装apk文件并获得以下错误:

失败[INSTALL_FAILED_ALREADY_EXISTS]

我已经使用Manifest更改了主文件的名称.也改变图标.

虽然同样的问题也来了.

欢迎任何建议.

在此先感谢.. Sunil Mishra

android

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

C#Networking API

最近我一直在寻找一个很好的网络API我可以使用和/或引用其中的一些代码,但我只是运气在Google/Bing上搜索一些.希望有人在这里看到和/或使用了一个有用的C#网络API.

提前致谢.

c# api networking

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

(约定)C#类名

我不太确定我应该对一组分组的类做些什么.

我的情况:我有11个只与该类相关的类Character.cs,但所有这些类(包括Character.csCharacterManager.cs)都在命名空间内Models.Characters.

这是命名类的更"正确"或首选方式:

(例子):

CharacterDetails.cs CharacterSprites CharacterAppearance CharacterClientRights CharacterServerRights

要么:

Details.cs Sprites Appearance ClientRights ServerRights

(他们都注意到了Models.Characters(例如Models.Characters.CharacterDetails,Models.Characters.Appearance)

提前致谢.

c# namespaces conventions naming-conventions

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

如何实现独立克隆的TADODataSet?

场景是这样的:

我们有一些SQL表.我们正在对此表执行SQL查询,并且我们在TADOQuery对象中有结果.

var
  qryOryginal, qryClone: TADOQuery;

begin
  //setup all the things here
  qryOryginal.Active := True;
  qryClone.Clone(qryOryginal, ltBatchOptimistic);
  qryOryginal.Delete; //delete in qryOryginal casues that qryClone deletes its record too!
end;
Run Code Online (Sandbox Code Playgroud)

因此,在克隆DataSet之后,我的qryClone应该保存并且独立数据(至少我是这么认为的).但是,在qryOryginal上执行Delete会导致qryClone上的操作相同.我不希望这样.

有任何想法吗?

我知道我可以将数据存储在TClientDataSet中的其他位置,但我想首先尝试上述解决方案.

在此先感谢您的时间.

delphi cloning tadodataset tadoquery

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

WPF DataGrid:如何将列设置为TextWrap?

我不确定为什么我的代码没有正确地进行TextWrapping.它没有包装Description列的文本(这就是我想要的).它只是削减它,它甚至不使用"..."让我知道有更多的数据.

我尝试使用我在网上找到的这个代码来完成这项工作,但它没有用.理想情况下,我希望能够只将TextWrap设置为某些列,而不是一般地跨所有DataGridCell对象.

哦,请注意我使用的是Microsoft.NET 4,因此这是通过它提供的DataGrid,而不是来自WPF Toolkit.

<DataGrid Name="TestGrid" Grid.Row="2" Grid.ColumnSpan="2" AutoGenerateColumns="False" ItemsSource="{Binding IntTypes}" SelectedValue="{Binding CurrentIntType}">
 <DataGrid.Resources>
  <Style TargetType="{x:Type DataGridCell}">
   <Setter Property="Template">
    <Setter.Value>
     <ControlTemplate TargetType="{x:Type DataGridCell}">
      <Border Name="DataGridCellBorder">
       <TextBlock Background="Transparent" TextWrapping="WrapWithOverflow" TextTrimming="CharacterEllipsis" Height="auto" Width="auto">
        <ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}"  ContentTemplate="{TemplateBinding Property=ContentControl.Content}" />
       </TextBlock>
      </Border>
     </ControlTemplate>
    </Setter.Value>
   </Setter>
  </Style>
 </DataGrid.Resources>
 <DataGrid.Columns>
  <DataGridTextColumn Header="ID" Binding="{Binding ID}" IsReadOnly="True" />
  <DataGridTextColumn Header="Interested Parties Description" Binding="{Binding Description}" IsReadOnly="False"  />
 </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

wpf datagrid word-wrap

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

计算python中numpy的欧几里德距离

我是Python的新手,所以这个问题可能看起来很琐碎.但是,我没有找到类似的情况.我有一个20个节点的坐标矩阵.我想计算此集合中所有节点对之间的欧氏距离,并将它们存储在成对矩阵中.例如,如果我有20个节点,我希望最终结果是(20,20)的矩阵,每个节点对之间的欧几里德距离值.我尝试使用for循环遍历坐标集的每个元素并计算欧氏距离,如下所示:

ncoord=numpy.matrix('3225   318;2387    989;1228    2335;57      1569;2288  8138;3514   2350;7936   314;9888    4683;6901   1834;7515   8231;709   3701;1321    8881;2290   2350;5687   5034;760    9868;2378   7521;9025   5385;4819   5943;2917   9418;3928   9770')
n=20 
c=numpy.zeros((n,n))
for i in range(0,n):
    for j in range(i+1,n):
        c[i][j]=math.sqrt((ncoord[i][0]-ncoord[j][0])**2+(ncoord[i][1]-ncoord[j][1])**2)
Run Code Online (Sandbox Code Playgroud)

但是,我收到的错误是"输入必须是方阵".我想知道是否有人知道这里发生了什么.谢谢

python numpy

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