Arama butonu
Bu konudaki kullanıcılar: 1 misafir
0
Cevap
216
Tıklama
0
Öne Çıkarma
Android Socket No-ip Adres Sorunu
E
7 yıl
Er
Konu Sahibi

Herkese iyi forumlar android java programlama konusunda yeniyim ihtiyacıma uygun basit bir yazılım yazmayı düşündüm yazılım gayet iyi çalışıyor ancak sunucuya uzaktan erişebilmek amacıyla no-ip ddns-a kullanmayı denedim server bilgisayar üzerinde çalışıyor normal ip adresime ve no-ip adresine serverın portu üzerinden ping attığımda sorun yok windows ta bir client yazıp o şekilde denedim onunla da sorunsuz çalıştı ancak android yazılımda no-ip adresindeki ip adresimi yanlış çözüyor ve bağlanamıyor direk olarak denediğimde sorun yok modemden nat ve port forwading ayarlarını yapmıştım zaten orada da bir hata olduğunu düşünmüyorum kaynak kodlar aşağıdaki şekilde yardımcı olursanız çok memnun olurum

Mainactiviy:
package com.mercanelectronics.recyclelithv1;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.text.method.ScrollingMovementMethod;

public class MainActivity extends AppCompatActivity {
private Button connectButton;
private TextView msg;

TcpClient mTcpClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

connectButton = (Button) findViewById(R.id.baglan);
msg = (TextView) findViewById(R.id.msg_text);

connectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mTcpClient != null) {
mTcpClient.stopClient();
mTcpClient = null;
connectButton.setText("Sunucuya Bağlan");
} else {
new ConnectTask().execute("");
connectButton.setText("Bağlantıyı Kes");
}
}
});

msg.setMovementMethod(new ScrollingMovementMethod());
}

public class ConnectTask extends AsyncTask<String, String, TcpClient> {

@Override
protected TcpClient doInBackground(String... message) {

//we create a TCPClient object
mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() {
@Override
//here the messageReceived method is implemented
public void messageReceived(String message) {
//this method calls the onProgressUpdate
publishProgress(message);
}
});
mTcpClient.run();
return null;
}

@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
//response received from server
Log.d("test", "response " + values[0]);
msg.setText(values[0].replaceAll("\\\\n", "\\\n"));
//process server response here....

}
}
}


TCPClient:
package com.mercanelectronics.recyclelithv1;

import android.util.Log;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;

public class TcpClient {

public static final String TAG = TcpClient.class.getSimpleName();
public static final String SERVER_IP = "109.228.227.38"; //server IP address
public static final int SERVER_PORT = 4305;
// message to send to the server
private String mServerMessage;
// sends message received notifications
private OnMessageReceived mMessageListener = null;
// while this is true, the server will continue running
private boolean mRun = false;
// used to send messages
private PrintWriter mBufferOut;
// used to read messages from the server
private BufferedReader mBufferIn;

/**
* Constructor of the class. OnMessagedReceived listens for the messages received from server
*/
public TcpClient(OnMessageReceived listener) {
mMessageListener = listener;
}

/**
* Sends the message entered by client to the server
*
* @param message text entered by client
*/
public void sendMessage(final String message) {
Runnable runnable = new Runnable() {
@Override
public void run() {
if (mBufferOut != null) {
Log.d(TAG, "Sending: " + message);
mBufferOut.println(message);
mBufferOut.flush();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}

/**
* Close the connection and release the members
*/
public void stopClient() {

mRun = false;

if (mBufferOut != null) {
mBufferOut.flush();
mBufferOut.close();
}

mMessageListener = null;
mBufferIn = null;
mBufferOut = null;
mServerMessage = null;
}

public void run() {

mRun = true;

try {
//here you must put your computer's IP address.
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);

Log.d("TCP Client", serverAddr.getHostAddress());

//create a socket to make the connection with the server
Socket socket = new Socket(serverAddr, SERVER_PORT);

try {

//sends the message to the server
mBufferOut = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);

//receives the message which the server sends back
mBufferIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));


//in this while the client listens for the messages sent by the server
while (mRun) {

mServerMessage = mBufferIn.readLine();

if (mServerMessage != null && mMessageListener != null) {
//call the method messageReceived from MyActivity class
mMessageListener.messageReceived(mServerMessage);
}

}

Log.d("RESPONSE FROM SERVER", "S: Received Message: '" + mServerMessage + "'");

} catch (Exception e) {
Log.e("TCP", "S: Error", e);
} finally {
//the socket must be closed. It is not possible to reconnect to this socket
// after it is closed, which means a new socket instance has to be created.
socket.close();
}

} catch (Exception e) {
Log.e("TCP", "C: Error", e);
}

}

//Declare the interface. The method messageReceived(String message) will must be implemented in the Activity
//class at on AsyncTask doInBackground
public interface OnMessageReceived {
public void messageReceived(String message);
}
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.