但是我这里有一些问题,有人能检查一下我的代码吗:
while (true) {
try {
Socket handler = mainSocket.Accept();
byte[] dataToRecieve = new byte[handler.ReceiveBufferSize];
int[] dataArray = new int[1024];
handler.Receive(dataToRecieve);
//////SOME CODE
int i = handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
catch(Exception) {}
--------//////some code
现在我想要接收字节到字节数组中&然后把它转换成int数组(但是数据应该在int数组中)........
好吧,您的代码在这里已经出现了一个问题:
handler.Receive(dataToRecieve);
您忽略了receive
返回的值,以告诉您实际读取了多少字节。那几乎总是个坏主意。同样,您假设您在一次呼叫中就收到了所需的所有信息。通常情况下,您要么必须循环直到读取所有数据-要么通过知道您期望的数量,要么通过读取直到没有更多的数据。
将数据转换为字节数组后,将其转换为整数数组取决于字节数组中的格式。您可能可以只使用buffer.blockcopy
,但这仅限于字节数组中的词尾与内存中的词尾匹配。或者,您可以简单地创建一个大小合适的数组,然后编写一个循环:
int[] integers = new byte[size / 4];
for (int i = 0; i < integers.Length; i++)
{
integers[i] = BitConverter.ToInt32(bytes, i * 4);
}
真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。
问题内容: 我有一个C ++服务器和两个客户端(红宝石和Java)。一切都在64位linux机器(java 1.7.0_17)上运行。ruby客户端可以正常工作,但是java版本会出现问题。 在Java中,我尝试将字符串从客户端发送到服务器。实际上,服务器收到了整个字符串,但是服务器认为还有更多东西要接收。 红宝石客户端看起来像这样: 这里的一切工作正常。红宝石客户端发送一个字符串。服务器接收该字
面试官迟到了几分钟,hr说是开会 面试官进来之后说开始吧。 1.没有自我介绍 2.八股(好多我忘记了想起来了再补充)顺序是操作系统,计网,C++。 我记得几个: TCP三次握手四次挥手 get和post区别 http状态码 cookie和session IP分片,路由器交换机网桥工作在哪一层,constexpr用过吗 进程和线程区别 什么情况会导致任务调度 页表存放在进程中还是系统中 静态库里面是
我正在使用C#window应用程序表单对TCP多线程服务器进行工作,我正在尝试检测客户端的机器是否关闭并断开与服务器的连接。看了一些帖子,有了一些想法: 如何确定tcp是否连接? 我的代码如下: 多谢帮忙。
我在JAVA中通过TCP接收字节数据包时遇到了一些问题。我的TCPServer类发送207字节的数据包。当我发送一个数据包时,控制台中的程序显示“读取207字节的数据包”然后停下来。在下一个数据包继续执行时,显示“多重测量”和“读取1868767867字节数据包”。之后,接收将永远停止。我不知道它为什么接收1868767867字节。我在wireshark中检查它,服务器总是发送207字节。 这是我
tcp 客户端例程 tcp 客户端例程 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:tcp 客户端 * * 这是一个 tcp 客户端的例程 *