【发布时间】:2011-01-05 10:01:49
【问题描述】:
我有一个由 java 编写的套接字服务器,它总是监听特定的端口。我用 Java 编写了一个客户端,它可以连接到服务器,但是当我用 C# 创建一个客户端时,我无法连接到服务器。
我只想发送一个短值来启动 java 服务器。
我猜问题来自字节序(小端,大端),我有几天的时间研究但无法解决这个问题。
我发布有关我的问题的更多信息
我使用 java.io.* 和 java.net.*。我的java代码
out = new ObjectOutputStream(requestSocket.getOutputStream());
out.flush();
公共静态最终短客户端= 0;
out.writeShort(CLIENT);
out.flush();
对于 c#,我使用 System.Net.Sockets。我的 C# 代码如下:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
...
短 sClient = 0;
if (BitConverter.IsLittleEndian) sClient = IPAddress.HostToNetworkOrder(sClient);
NetworkStream ns = new NetworkStream(socket);
BinaryWriter bw = new BinaryWriter(ns);
bw.Write(sClient);
java代码可以连接到java服务器但是c#代码不能:(。java服务器的输出错误是“Exception while getting socket streams”
任何人都可以帮助我解决这个问题,在此先感谢
【问题讨论】:
-
要排除字节顺序,只需打印出您收到的短片和您打印的短片。例如,如果您发送的短消息是 0x1234,而您收到的短消息是 0x3412,那么万岁,这是一个字节序问题。如果你什么也没收到或收到完全不同的东西,那就是另外一回事了。调试无非就是一步步排除问题,直到发现问题