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
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(); }
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(); }
//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); } }