【发布时间】:2016-04-05 09:04:09
【问题描述】:
我正在使用 NetComm dll 来处理多用户。我的问题是当我发送文本时它工作正常,但当我截屏时它不起作用。 我的客户代码是
ms = new MemoryStream();
bmpScreenshot.Save(ms, ImageFormat.Png);
byte[] buffer;
buffer =imageToByteArray(bmpScreenshot);
client.SendData(buffer);
而将图像转换为字节数组的函数是:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
在接收端我是这样处理的:
Stream stream = new MemoryStream(Data); // Data is byte array
pictureBox1.Image = Image.FromStream(stream);
pictureBox1.Refresh();
收到后我在图片框中显示图像。
使用 NetComm dll 我只能发送和接收字节数组格式的数据。
NetComm dll 为我提供了通过使用其 ID 从客户端与另一个客户端进行通信的工具。当服务器启动时,它等待客户端,一旦客户端连接,它就开始以某种方式为它们提供 id,如 abc1、abc2、abc3。当 abc1 想要与 abc3 通信时,它只需输入 abc3 作为 id 而不是 IP 并发送消息,该消息应传递给 abc3。
如您所见,有两个客户端连接到服务器,并且都获得了类似 jack1 和 jack2 的 id。现在,如果他们想相互交流,他们只需在其中输入各自的 id 并发送消息。
【问题讨论】:
-
或任何关于客户与客户沟通的建议,我的意思是当客户想向其他客户发送个人信息时,我会尝试什么方法?
-
在什么意义上它不起作用?
-
这个问题缺乏太多细节...您确实需要提供更多信息,例如您如何使用 NetComm 的minimal reproducible example,以便我们重现该问题。
-
我想使用一个有多个客户端的tcp服务器,所有的客户端都可以通过提供一个客户端id相互通信。
-
可能还有其他方法可以实现这一点,或者我做错了。因为当我从客户发送图片时,我希望它会出现在任何其他客户身上,但不会发生。如果是文本,它的工作正常。
标签: c# .net sockets client-server