【发布时间】:2016-02-23 13:43:19
【问题描述】:
我有一个 TCP 客户端-服务器架构。服务器是用 C# 编写的,客户端是用 Java 编写的。 我想获取客户端设备的 MAC 地址。两者之间的连接正在工作。当我发送带有数据 "IPMAC" 的数据包时,它会被正确接收和解码。 但是当我将 MAC 地址发送到服务器时,它会更改其中的数据。
用于发送的Java代码:
InetAddress ip;
try {
ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
outStream.write(sb.toString().getBytes("UTF-8"));
System.out.println("Data sent " + sb.toString());
} catch (IOException e) {
System.out.println("Unable to get MAC address of device or send it to server");
}
接收的C#代码:
size = 6;
byte[] buffer = new byte[6];
int received = 0;
ticks = Environment.TickCount;
do
{
try
{
if (Environment.TickCount > ticks + timeout)
throw new TimeoutException("Timout while receiving!");
received = received + client.Client.Receive(buffer, received, size - received, SocketFlags.None);
}
catch (SocketException)
{
}
catch (TimeoutException)
{
break;
}
if (buffer.Length > 1)
{
MessageBox.Show("Packet received!", "Wow", MessageBoxButton.OK, MessageBoxImage.Information);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < buffer.Length; i++)
{
sb.Append(String.Format("%02X%s", buffer[i], (i < buffer.Length - 1) ? "-" : ""));
}
Console.WriteLine(BitConverter.ToString(buffer));
break;
}
}
while (received < size);
我在两边都使用 UTF-8 编码。
发送的 MAC 地址:00-08-BA-11-00
收到的 MAC 地址:A1-21-00-00-00
谢谢
【问题讨论】:
标签: java c# client-server