Написал TCP сервер и клиент на C#. Всё работает: клиент подключается к серверу и сервер принимает подключение от клиента. Потом решил сделать клиент на Java Android Studio. Сделал подключение через socket по моему локальному ip и общему порту(такому же как и на сервере). И строчка кода с подключением: Socket s = new Socket("192.168.43.183", 8080) не проходит: подключения тупо не действует.
Вот код сервера на C#
public class ServerObject
{
static TcpListener tcpListener; // сервер для прослушивания
List<ClientObject> clients = new List<ClientObject>(); // все подключения
protected internal void AddConnection(ClientObject clientObject)
{
clients.Add(clientObject);
}
protected internal void RemoveConnection(string id)
{
// получаем по id закрытое подключение
ClientObject client = clients.FirstOrDefault(c => c.Id == id);
// и удаляем его из списка подключений
if (client != null)
clients.Remove(client);
}
// прослушивание входящих подключений
protected internal void Listen()
{
try
{
tcpListener = new TcpListener(IPAddress.Any, 8080);
tcpListener.Start();
Console.WriteLine("Сервер запущен. Ожидание подключений...");
while (true)
{
TcpClient tcpClient = tcpListener.AcceptTcpClient();
ClientObject clientObject = new ClientObject(tcpClient, this);
Thread clientThread = new Thread(new ThreadStart(clientObject.Process));
clientThread.Start();
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Disconnect();
}
}
// трансляция сообщения подключенным клиентам
protected internal void BroadcastMessage(string message, string id)
{
byte[] data = Encoding.Unicode.GetBytes(message);
for (int i = 0; i < clients.Count; i++)
{
clients[i].Stream.Write(data, 0, data.Length); //передача данных
}
}
// отключение всех клиентов
protected internal void Disconnect()
{
tcpListener.Stop(); //остановка сервера
for (int i = 0; i < clients.Count; i++)
{
clients[i].Close(); //отключение клиента
}
Environment.Exit(0); //завершение процесса
}
}
Код клиента на Java Android Studio
public class MainActivity extends AppCompatActivity {
private EditText ipeditText;
private EditText nicknameText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void OnButtonClick1 (View view) {
ipeditText = (EditText) findViewById(R.id.ipeditText);
nicknameText = (EditText) findViewById(R.id.nameText);
String ip = ipeditText.getText().toString();
String nick = nicknameText.getText().toString();
BackGroundTask b1 = new BackGroundTask();
b1.execute(ip, nick);
try {
Socket s = new Socket("192.168.43.183", 8080);
PrintWriter printWriter = new PrintWriter(s.getOutputStream());
printWriter.write(nick);
printWriter.flush();
printWriter.close();
}
catch (IOException e) {
e.printStackTrace();
}
// String ip = ipeditText.getText().toString();
// try {
// s = new Socket(ip, 8080);
// printWriter = new PrintWriter(s.getOutputStream());
// } catch (IOException e) {
// e.printStackTrace();
// }
Intent intent = new Intent(this, DisplayChatActivity.class);
startActivity(intent);
}
Пока что мне нужно хотя бы подключить клиент Java Android Studio к серверу на C#. Но подключение не проходит и исключение тупо пропускает его. Что именно не так в коде? И вообще возможно ли создания сервера/клиента на разных Я.П.