Я пытаюсь отправить данные из программы на C # .NET (приложение Windows) в программу Java (приложение Android) и наоборот, через TCP-соединение через Wi-Fi. До сих пор я успешно отправлял данные из Java в C #, но не смог сделать это из C # в Java.
Ниже приведен код Java, который я использовал для создания соединения и получения данных:
ServerSocket serverSocket = null;
DataInputStream socketInputStream;
while (true) {
try {
String localIPAddr = getLocalIPAddress();
InetSocketAddress ipEndPoint = new InetSocketAddress(
InetAddress.getByName(localIPAddr), 8222);
serverSocket = new ServerSocket();
serverSocket.bind(ipEndPoint, 4);
workerSocket = serverSocket.accept();
socketInputStream = new DataInputStream(
workerSocket.getInputStream());
inputText.setText(socketInputStream.readUTF());
} catch (Exception ex) {
throw ex;
}
}
Здесь getLocalIPAddress()
метод возвращает IP-адрес устройства Android.
Ниже приведен код C # в приложении Windows для подключения к IP-адресу Android (192.168.1.6) и отправки на него данных:
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
void button1_Click(object sender, EventArgs e)
{
try
{
if (!clientSocket.Connected)
clientSocket.Connect(IPAddress.Parse("192.168.1.6"), 8222);
clientSocket.Send(Encoding.UTF8.GetBytes(txtInput.Text));
}
catch (Exception ex)
{
throw ex;
}
}
Что ж, клиент (C #) не может подключиться к серверу (Java). Это означает, что данные не уходят от клиента. Но это будет, если он подключится. Пожалуйста, скажите мне, что мне не хватает и где я ошибаюсь. :)