【发布时间】:2021-10-04 15:04:27
【问题描述】:
我正在尝试向 gprs 服务器发送一条 tcp 消息。我试图通过 WCF 来做到这一点,但是,我总是看到有关服务消费的教程或信息,但是,没有服务可以消费。它只是使用 WCF 向服务器发送一个 tcp 类型的消息。我有端口和用于连接的服务器。我怎么能做到?我需要创建用于发送消息的 WCF 客户端,但我不知道如何没有服务。
我正在使用 Visual Studio 和 C# 语言
【问题讨论】:
我正在尝试向 gprs 服务器发送一条 tcp 消息。我试图通过 WCF 来做到这一点,但是,我总是看到有关服务消费的教程或信息,但是,没有服务可以消费。它只是使用 WCF 向服务器发送一个 tcp 类型的消息。我有端口和用于连接的服务器。我怎么能做到?我需要创建用于发送消息的 WCF 客户端,但我不知道如何没有服务。
我正在使用 Visual Studio 和 C# 语言
【问题讨论】:
我正在尝试向 gprs 服务器发送一条 tcp 消息。我试图通过 WCF 来做到这一点
由于远程服务器不是 SOAP 服务,而只是暴露 TCP 端口的服务器,因此您应该使用 TCP API 而不是 WCF。原因是消息内容和协议会有所不同。 WCF 使用通常作为 XML 文本发送的 SOAP 消息,而不是二进制的 TCP。现在您可以将 WCF 配置为序列化为二进制文件,但结果仍然会有所不同。 TCP 与 WCF 的区别还有很多,这里我就不赘述了。
使用以下 TCP 示例:
TcpClient client = new TcpClient("localhost", 80); //enter your server ip and port
// Translate the passed message into ASCII and store it as a Byte array
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
// Get the stream for writing
NetworkStream stream = client.GetStream();
// Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length);
//Close everything to avoid memory leaks
stream.Close();
client.Close();
【讨论】: