Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#套接字发送接收网络_C#_Sockets - Fatal编程技术网

c#套接字发送接收网络

c#套接字发送接收网络,c#,sockets,C#,Sockets,我对自己的问题感到困惑和震惊。我使用套接字编写了一个多客户端服务器 我创建了第一个接收客户端并在gridview中显示它们的GUI,在click gridview事件中,它打开了一个新的GUI,其中包含单击的客户端和服务器之间的套接字。因此,服务器和客户机之间的连接一切进展顺利,速度也很快 但我的问题是: 它们之间的发送信息就像发送完整的过程,有时显示完整,有时显示较少的结果 发送文件管理—例如,当服务器请求目录中的完整文件夹/文件时,有时会显示所有文件夹/文件,有时会显示较少的结果 但是像这样

我对自己的问题感到困惑和震惊。我使用套接字编写了一个多客户端服务器

我创建了第一个接收客户端并在gridview中显示它们的GUI,在click gridview事件中,它打开了一个新的GUI,其中包含单击的客户端和服务器之间的套接字。因此,服务器和客户机之间的连接一切进展顺利,速度也很快

但我的问题是:

  • 它们之间的发送信息就像发送完整的过程,有时显示完整,有时显示较少的结果

  • 发送文件管理—例如,当服务器请求目录中的完整文件夹/文件时,有时会显示所有文件夹/文件,有时会显示较少的结果

  • 但是像这样的命令打开一个窗口,打开一个url,发送一条消息,像这样的命令工作得如此完美和迅速

    我现在很困惑,有什么问题吗

    • 注意1:我使用外部IP连接服务器/客户端
    • 注意2:互联网连接是完美的(绝对不慢)
    我尝试使用不同的缓冲区大小,但我真正感到困惑的是,有时结果是一个特定的缓冲区大小,而有时不是相同的缓冲区大小


    谢谢你抽出时间

    我还建议您使用wireshark,这样您就能够获得网络中真实发生的全部信息和交易

    这将帮助您排除问题的来源

    要确定数据包大小,请参见图像

    这里我不是说TCP握手协议是如何工作的,因为我假设它正在工作。但是请注意,在传输中,如果您看到类似RST的内容,则可能有人发出了重置命令,这意味着传输中发生了错误。例如,由于校验和的原因。尽管对于直接使用TCP/IP协议的人来说,这通常是一个问题


    这将帮助您确认发送和接收的长度正确

    你使用了什么协议?请参阅,http协议使用内容长度来检测数据包大小。您必须传输数据包大小信息,并首先读取数据包头(限制大小),而不是数据包的其他路径。首先感谢您的回复,因此我使用tcp与流套接字类型和互联网卡。我不完全理解您的评论。您必须先传输数据包长度。例如,请参阅http规范。假设我有一个函数,可以传输所有已执行的进程,因此我需要先收集这些进程的所有大小,然后再发送?是的,消息的大小也会添加到数据包中。例如:
    struct S{int size;char data[1]}S;发送(s,datasize+sizeof(int))
    ,然后datasize=Read(sizeof(int))和Read(datasize)Hi,你能描述一下他是如何检测数据包大小的吗?嗨,我已经更新了我的答案。请问我任何问题,如果你有任何问题,我可以帮助。如果你喜欢我的答案,也请给我一张赞成票!