Я пытался найти ответ на свой вопрос, но безрезультатно ... Единственное, что я нашел, были только темы "Android Клиент, P C Сервер", и я хочу сделать наоборот, и я не знаю, как отправить данные на телефон android.
Проблема в том, что я ничего не могу отправить на свой сервер Android. Я вижу, что сервер создан, потому что, когда я нажимаю кнопку в приложении на Android, чтобы запустить сервер на P C Клиент запускается, и если я не нажимаю, я получаю ошибку на P C не удалось подключиться.
Java:
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start_receiving:
startServerSocket();
buttonStartReceiving.setEnabled(false);
buttonStopReceiving.setEnabled(true);
break;
case R.id.btn_stop_receiving:
//stopping server socket logic you can add yourself
buttonStartReceiving.setEnabled(true);
buttonStopReceiving.setEnabled(false);
break;
}
}
private void startServerSocket() {
Thread thread = new Thread(new Runnable() {
private String stringData = null;
private String c = null;
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(8080);
while (!end) {
//Server is waiting for client here, if needed
Socket s = ss.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter output = new PrintWriter(s.getOutputStream());
stringData = input.readLine();
output.println("FROM SERVER - " + stringData.toUpperCase());
output.flush();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
updateUI(stringData);
if (stringData.equalsIgnoreCase("STOP")) {
end = true;
output.close();
s.close();
break;
}
output.close();
s.close();
}
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
C#
private void Form1_Load(object sender, EventArgs e)
{
//System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient(); <-- I HAVE THIS ON TOP
clientSocket.Connect("192.168.0.57", 8080); //192.168.0.57 It's my Android IP
label1.Text = "Client Socket Program - Server Connected ..."; //Notify that connected
}
private void button1_Click(object sender, EventArgs e)
{
try
{
Socket s = new Socket(SocketType.Stream, ProtocolType.Tcp);
ASCIIEncoding asen = new ASCIIEncoding();
s.Send(asen.GetBytes("The string was recieved by the server."));
s.Close();
}
catch (Exception ex)
{
}
}
И при кнопке в C# я получаю ошибку: The request to send or receive data has been blocked because the socket is not connected and no address has been provided in System.Net.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags, socketFlags) in System.Net.Sockets.Socket.Send(Byte[] buffer)
Я впервые с Сокетом. Я думаю, проблема в том, что P C Клиент не знает, куда отправить эти данные ... Но не знаю, как я могу это сделать.
Спасибо за любую помощь!