小编Dan*_*ard的帖子

如何设置TcpClient的超时?

我有一个TcpClient,我用它来发送数据到远程计算机上的监听器.远程计算机有时会打开,有时会关闭.因此,TcpClient将无法经常连接.我希望TcpClient在一秒钟后超时,因此它无法连接到远程计算机时花费太多时间.目前,我将此代码用于TcpClient:

try
{
    TcpClient client = new TcpClient("remotehost", this.Port);
    client.SendTimeout = 1000;

    Byte[] data = System.Text.Encoding.Unicode.GetBytes(this.Message);
    NetworkStream stream = client.GetStream();
    stream.Write(data, 0, data.Length);
    data = new Byte[512];
    Int32 bytes = stream.Read(data, 0, data.Length);
    this.Response = System.Text.Encoding.Unicode.GetString(data, 0, bytes);

    stream.Close();
    client.Close();    

    FireSentEvent();  //Notifies of success
}
catch (Exception ex)
{
    FireFailedEvent(ex); //Notifies of failure
}
Run Code Online (Sandbox Code Playgroud)

这对于处理任务非常有效.如果可以,它会发送它,如果它无法连接到远程计算机,则捕获异常.但是,当它无法连接时,抛出异常需要十到十五秒.我需要它在大约一秒钟内超时?我怎样才能改变超时时间?

c# networking tcpclient winforms

68
推荐指数
5
解决办法
8万
查看次数

将INotifyPropertyChanged与Entity Framework 6 DbContext Generator一起使用

我知道我可以使用ObjectContext,但我喜欢DbContext/DbSet的功能.我的应用程序不够大,无法保证我编写复杂的视图模型,所以我想直接在EF生成的模型上实现更改通知.

我怎样才能做到这一点?

inotifypropertychanged dbcontext entity-framework-6

7
推荐指数
3
解决办法
9604
查看次数

基于成员平等的两个对象联盟

为了示例,让我们从类定义开始:

public class Person
{
    public string FirstName;
    public string LastName;
    public int Age;
    public int Grade;
}
Run Code Online (Sandbox Code Playgroud)

现在让我们假设我有一个包含3个对象的List<Person>被调用者people:

{"Robby", "Goki", 12, 8}
{"Bobby", "Goki", 10, 8}
{"Sobby", "Goki", 10, 8}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一些检索以下单个Person对象的方法:

{null, "Goki", -1, 8}
Run Code Online (Sandbox Code Playgroud)

其中所有对象中相同的字段保留其值,而具有多个值的字段将替换为某些无效值.

我的第一个想法包括:

Person unionMan = new Person();
if (people.Select(p => p.FirstName).Distinct().Count() == 1)
    unionMan.FirstName = people[0].FirstName;
if (people.Select(p => p.LastName).Distinct().Count() == 1)
    unionMan.LastName = people[0].LastName;
if (people.Select(p => p.Age).Distinct().Count() == 1)
    unionMan.Age = people[0].Age;
if (people.Select(p …
Run Code Online (Sandbox Code Playgroud)

c#

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

清空"使用"块

这里已经确定空的使用块不是一种适当的覆盖方式Dispose(),但是下面的情况呢?

这是空using块的合法用途吗?

try
{
    using (File.OpenRead(sourceFile)) { }
}
catch (FileNotFoundException)
{
    error = "File not found: " + sourceFile;
}
catch (UnauthorizedAccessException)
{
    error = "Not authorized to access file: " + sourceFile;
}
catch (Exception e)
{
    error = "Error while attempting to read file: " + sourceFile + ".\n\n" + e.Message;
}

if (error != null)
    return error;

System.Diagnostics.Process.Start(sourceFile);
Run Code Online (Sandbox Code Playgroud)

c# using

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

打印时Vim有不同的配色方案

是否有一种方法在_vimrc中设置打印文件时使用的不同colorscheme?

我喜欢屏幕上的暗背景光文本方案,但显然这不能很好地转化为纸张.

编辑:我可以在打印之前手动更改方案,然后将其更改回来并且工作正常.只是好奇是否有办法告诉Vim在打印时始终使用特定方案.

这是:hardcopy输出: 在此输入图像描述

vim

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

这个C宏中逗号的目的是什么?

我在Stretchy_buffer.h中看到了类似的内容:

#define stb_sb_free(a) ((a) ? free(stb__sbraw(a)),0 : 0)
Run Code Online (Sandbox Code Playgroud)

,0致电后的目的是什么free()

同样,这里有两个奇怪的逗号:

#define stb_sb_add(a,n) (stb__sbmaybegrow(a,n), stb__sbn(a)+=(n), &(a)[stb__sbn(a)-(n)])
Run Code Online (Sandbox Code Playgroud)

似乎正在运行多个语句,但是那不需要分号吗?

c

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

C#中的链式相等比较

今天我遇到了以下(令人难以置信的钝)代码:

if (str == null == false)
Run Code Online (Sandbox Code Playgroud)

我最初的假设是它在逻辑上等同于

if((str == null) == false)
Run Code Online (Sandbox Code Playgroud)

因此

if(str != null)
Run Code Online (Sandbox Code Playgroud)

这么简单吗?

c#

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

C中可存储10,000,000的最小数据类型是什么?

我试图通过一个用C编写的简单控制台应用程序来庆祝StackOverflow上的10,000,000个问题,但我不想浪费任何内存.在内存中存储数字10,000,000的最有效方法是什么?

c memory

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

什么是RADIUS?

我听过很多关于RADIUS的消息.但我仍在问自己有关它的问题.在维基百科中,据说它是一种为用户提供身份验证,授权和帐户管理的网络协议.它是如何运作的?为什么我应该选择RADIUS而不是简单的数据库?

database radius

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

C#二维int数组,Sum off所有元素

我试图制作一个程序,它总结了数组中的元素.但我在MVS上有' System.IndexOutOfRangeException '错误.谁能说出我的错误在哪里?

public static int Sum(int[,] arr)
{
    int total = 0;
    for (int i = 0; i <= arr.Length; i++)
    {
        for (int j = 0; j <= arr.Length; j++)
        {
            total += arr[i,j];
        }
    }
    return total;
}

static void Main(string[] args)
{
    int[,] arr = { { 1, 3 }, { 0, -11 } };
    int total = Sum(arr);

    Console.WriteLine(total);
    Console.ReadKey(); 
}
Run Code Online (Sandbox Code Playgroud)

c# arrays

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

为什么这个strstr实例会给我分段错误?

这是完整的代码

int count_substr(const char *str, const char *sub)
{
    char *ret;

    int a = 0; // used to tell where the pointer has moved to
    int count = 0;

    ret = strstr(str, sub);

    while (strstr(ret, sub) !=  NULL) {
        printf("The substring is: %s\n", ret);

        for (a = 0; a < strlen(sub); a++) {
            ret++;
        }

        printf("The substring after moving pointer is: %s\n", ret);
        count++;
    }

    return count - 1;  
}
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么,我没有使用空指针一次

strstr(ret,sub) 
Run Code Online (Sandbox Code Playgroud)

变为null,为什么它会给我seg错误?

Valgrind会说明这一点

无效读取大小1和地址0x0未堆叠,malloc'd或(最近)free'd

c

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