PDA

View Full Version : ارسال رشته به ip با پورت مشخص ؟



aminie
یک شنبه 04 آبان 1393, 16:31 عصر
سلام وقت بخیر
من میخوام یک رشته را به ip با پورت مشخص ارسال کنم.خیلی هم سرچ کردم به این کد رسیدم



private Socket client;
private PrintWriter printwriter;
try {


Log.d("level1", "level1");
client = new Socket("IP", PORT); //connect to server
printwriter = new PrintWriter(client.getOutputStream(),true);
printwriter.write(messsage); //write the message to output stream


printwriter.flush();
printwriter.close();
client.close(); //closing the connection




} catch (UnknownHostException e) {
e.printStackTrace();




} catch (IOException e) {
e.printStackTrace();




}




حالا 2 تا سوال دارم
1 اینکه هنگام اجرا از خط



client = new Socket("85.185.161.70", 1723); //connect to server

خطا میگیره .دلیل چیه؟
2 اینکه چه طوری میتونم سرور را چک کنم که داده ارسالی آمده یا نه؟

ممنونم

aminie
دوشنبه 05 آبان 1393, 10:31 صبح
کسی متن را به ip ارسال نکرده؟
:ناراحت::ناراحت:

MSHService
دوشنبه 05 آبان 1393, 12:58 عصر
با درود و ادب

اره دوست عزیز

دقیقا بگو چی میخوای؟!

شما اون وری که میخواهی بهش ارسال بشه باید یه سرور داشته باشی! بعد از این ور

به اون IP و پورت سرور وصل بشی و بهش رشته ارسال کنی.

من این کد رو نوشتم به کارتون میاد. البته فقط سمت سرور هست.

کلاینتتم فرض Telnet هست. ای برنامه سرور رو روی پورت 2222 ران میکنه و شما کافیه توی RUN بنویسی telnet 127.0.0.1 2222 و هر رشته ای رو میخوای توی تلنتت بویس تا به سرور پاس داده بشه


package TEST;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author me-sharifi
*/
public class MyTestServer {

private static ServerSocket ss;
private static Socket s ;
private static InputStream in;
private static PrintWriter mOut;
private static BufferedReader mSocketReader;

public static void main (String[] args){

try {
ss = new ServerSocket(2222);


} catch (IOException ex) {
System.err.println("ERR Exception : "+ex.getMessage());
}

for (;; ) {
try {
s = ss.accept();
System.out.println("Client Accepted : " + s);
mOut = new PrintWriter(
new OutputStreamWriter(s.getOutputStream()) );

mOut.println("WELOME : "+s);
mOut.flush();

s.setKeepAlive(true);

CheckClientAliveT ca = new CheckClientAliveT(s);

WorkerThread wt = new WorkerThread(s);
ca.start();
wt.start();


} catch (IOException ex) {
Logger.getLogger(MyTestServer.class.getName()).log (Level.SEVERE, null, ex);
System.err.println("ERR run Exception : "+ex.getMessage());
}
}
}
public static class WorkerThread extends Thread{
private Socket mSocket;
private BufferedReader mIn;
private PrintWriter mOut;

public WorkerThread(Socket socket) {
this.mSocket = socket;
try {

// Create character streams for the socket.
this.mIn = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
this.mOut = new PrintWriter(socket.getOutputStream(), true);


} catch (IOException ex) {
System.err.println("Eception ERR : WorkerThread :"+ex.getMessage());
}
}

@Override
public void run() {


while ((!isInterrupted())) {
// while ((true)) {
try{
String input = mIn.readLine();
if (input == null) {
return;
}
System.out.println("From Client : "+input);
mOut.println("MESSAGE " + ": " + input);
if(mOut.checkError())
System.out.println("mOut.checkError() TRUE");

} catch (IOException ex) {
System.err.println("Eception ERR run : "+ex.getMessage());
}
}
}

}
public static class CheckClientAliveT extends Thread{
private Socket mSocket;
private PrintWriter mOut;

public CheckClientAliveT(Socket socket) {
this.mSocket = socket;
try {

this.mOut = new PrintWriter(socket.getOutputStream(), true);

} catch (IOException ex) {
System.err.println("Eception ERR : SendThread : " + ex.getMessage());
}
}

@Override
public void run() {
for (int i = 0; (i < 1000) && (!isInterrupted()) ; i++) {
mOut.println("Send " + ": " +i);

if(mOut.checkError())
System.out.println("Broken Connection checkError: "+ mSocket.getPort());
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(MyTestServer.class.getName()).log (Level.SEVERE, null, ex);
}
}
mOut.println("Fin run 100 " );

}
}
}

aminie
سه شنبه 06 آبان 1393, 08:11 صبح
با درود و ادب

اره دوست عزیز

دقیقا بگو چی میخوای؟!

شما اون وری که میخواهی بهش ارسال بشه باید یه سرور داشته باشی! بعد از این ور

به اون IP و پورت سرور وصل بشی و بهش رشته ارسال کنی.

من این کد رو نوشتم به کارتون میاد. البته فقط سمت سرور هست.

کلاینتتم فرض Telnet هست. ای برنامه سرور رو روی پورت 2222 ران میکنه و شما کافیه توی RUN بنویسی telnet 127.0.0.1 2222 و هر رشته ای رو میخوای توی تلنتت بویس تا به سرور پاس داده بشه


package TEST;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author me-sharifi
*/
public class MyTestServer {

private static ServerSocket ss;
private static Socket s ;
private static InputStream in;
private static PrintWriter mOut;
private static BufferedReader mSocketReader;

public static void main (String[] args){

try {
ss = new ServerSocket(2222);


} catch (IOException ex) {
System.err.println("ERR Exception : "+ex.getMessage());
}

for (;; ) {
try {
s = ss.accept();
System.out.println("Client Accepted : " + s);
mOut = new PrintWriter(
new OutputStreamWriter(s.getOutputStream()) );

mOut.println("WELOME : "+s);
mOut.flush();

s.setKeepAlive(true);

CheckClientAliveT ca = new CheckClientAliveT(s);

WorkerThread wt = new WorkerThread(s);
ca.start();
wt.start();


} catch (IOException ex) {
Logger.getLogger(MyTestServer.class.getName()).log (Level.SEVERE, null, ex);
System.err.println("ERR run Exception : "+ex.getMessage());
}
}
}
public static class WorkerThread extends Thread{
private Socket mSocket;
private BufferedReader mIn;
private PrintWriter mOut;

public WorkerThread(Socket socket) {
this.mSocket = socket;
try {

// Create character streams for the socket.
this.mIn = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
this.mOut = new PrintWriter(socket.getOutputStream(), true);


} catch (IOException ex) {
System.err.println("Eception ERR : WorkerThread :"+ex.getMessage());
}
}

@Override
public void run() {


while ((!isInterrupted())) {
// while ((true)) {
try{
String input = mIn.readLine();
if (input == null) {
return;
}
System.out.println("From Client : "+input);
mOut.println("MESSAGE " + ": " + input);
if(mOut.checkError())
System.out.println("mOut.checkError() TRUE");

} catch (IOException ex) {
System.err.println("Eception ERR run : "+ex.getMessage());
}
}
}

}
public static class CheckClientAliveT extends Thread{
private Socket mSocket;
private PrintWriter mOut;

public CheckClientAliveT(Socket socket) {
this.mSocket = socket;
try {

this.mOut = new PrintWriter(socket.getOutputStream(), true);

} catch (IOException ex) {
System.err.println("Eception ERR : SendThread : " + ex.getMessage());
}
}

@Override
public void run() {
for (int i = 0; (i < 1000) && (!isInterrupted()) ; i++) {
mOut.println("Send " + ": " +i);

if(mOut.checkError())
System.out.println("Broken Connection checkError: "+ mSocket.getPort());
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(MyTestServer.class.getName()).log (Level.SEVERE, null, ex);
}
}
mOut.println("Fin run 100 " );

}
}
}







خیلی ممنون از پاسختون
فقط ی سری سوال
چیزی که من میخوام اینه که به ی سرور با Ip و پورت مشخص، یک متن را ارسال کنم...اما در کد شما شماره Ip سرور را ندیدم...
در واقع کد سمت کلاینت رو میخوام که ارسال رشته داشته باشم و اینکه وقتی رشته به سرور ارسال میشه چطور میشه در سرور دریافت رشته را چک کنم.
ممنون لطف می کنید.

aminie
سه شنبه 06 آبان 1393, 11:39 صبح
اگه کسی با urlکار کرده هم خوبه
یعنی ارسال داده بطور مثال به آدرس www.example.com
ممنون میشم راهنمایی کنید...

c0mmander
سه شنبه 06 آبان 1393, 12:04 عصر
برای ارسال به پورت و ip دو روش بنیادی وجود داره یکی استفاده از TCP برای ارتباط دوطرفه و برقرار شده و یکی هم استفاده از UDP (دوطرفه اما غیر مرتبط). این ها از اصول برنامه نویسی شبکه هستند.

ممکنه شما بخواهید تصویر رو انتقال بدید باید از udp استفاده کنید یا از کتاب خونه ها یا از VoIP ها استفاده کنید.
یا در مواردی که از صحت عمل ارسال بسیار مهم است بهتره که از TCP استفاده کنید.
-------------------------------------
حالا اگر میخواهید مقداری رو مثلا به php یا برنامه سمت وب بفرستید. با با استفاده از وب رکوسیت ها این کار انجام بدید و از وب ریسپانس ها جوابهای وب رو بخونید. دقیق همون کار مرورگر رو برای شما انجام میده با این تفاوت که عنصر نمایشی ندارید و خروجی برای شما نمایش داده میشه
زبان من جاوا نیست وگرنه کد رو برات میزاشتم اما یکی از دوستان توضیح مفصلی رو گذاشتن:
http://barnamenevis.org/showthread.php?457283-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%A8%D9 %87+PHP+%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

این لینک باید مشکلت رو حل کنه:
http://stackoverflow.com/questions/3505930/make-an-http-request-with-android

(لازم به گفتن نیست که باید مقادیر بصورت صورت استاندارد ارسال بشه تکنولوژی مورد استفاده مثلا PHP یا asp )

aminie
سه شنبه 06 آبان 1393, 12:57 عصر
برای ارسال به پورت و ip دو روش بنیادی وجود داره یکی استفاده از TCP برای ارتباط دوطرفه و برقرار شده و یکی هم استفاده از UDP (دوطرفه اما غیر مرتبط). این ها از اصول برنامه نویسی شبکه هستند.

ممکنه شما بخواهید تصویر رو انتقال بدید باید از udp استفاده کنید یا از کتاب خونه ها یا از VoIP ها استفاده کنید.
یا در مواردی که از صحت عمل ارسال بسیار مهم است بهتره که از TCP استفاده کنید.
-------------------------------------
حالا اگر میخواهید مقداری رو مثلا به php یا برنامه سمت وب بفرستید. با با استفاده از وب رکوسیت ها این کار انجام بدید و از وب ریسپانس ها جوابهای وب رو بخونید. دقیق همون کار مرورگر رو برای شما انجام میده با این تفاوت که عنصر نمایشی ندارید و خروجی برای شما نمایش داده میشه
زبان من جاوا نیست وگرنه کد رو برات میزاشتم اما یکی از دوستان توضیح مفصلی رو گذاشتن:
http://barnamenevis.org/showthread.php?457283-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF&highlight=%D8%A7%D8%B1%D8%B3%D8%A7%D9%84+%D8%A8%D9 %87+PHP+%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

این لینک باید مشکلت رو حل کنه:
http://stackoverflow.com/questions/3505930/make-an-http-request-with-android

(لازم به گفتن نیست که باید مقادیر بصورت صورت استاندارد ارسال بشه تکنولوژی مورد استفاده مثلا PHP یا asp )



ممنونم خیلی لطف کردید اما من دنبال کد جاوا ام :ناراحت:

خیلی سرچ میکنم اما سورسی که کامل باشه نیست...
دنبال ی کدم که بتونم رشته ای را به ی سایت بفرستم ...

c0mmander
سه شنبه 06 آبان 1393, 14:11 عصر
ممنونم خیلی لطف کردید اما من دنبال کد جاوا ام :ناراحت:

خیلی سرچ میکنم اما سورسی که کامل باشه نیست...
دنبال ی کدم که بتونم رشته ای را به ی سایت بفرستم ...

کد کامل جاوا و توضیحات کامل در لینک های بالا گذاشته شده..
آدرسی که باید برای ارتباط با کلایت تون رو بسازید بسته به برنامه سرور متفاوته(باید حتما برنامه سرور رو نوشته باشید یا سورس اون رو داشته باشید) که اون هم در لینک اون دوستمون کاملا توضیح داده بود.
به عنوان مثل:


string url ="www.yoursite.com/login.php?user=commander&pass=1234";

باید در سایت شما برنامهphp وجود داشته باشه که مقادیر user , pass رو بخواند

aminie
چهارشنبه 07 آبان 1393, 09:11 صبح
کد کامل جاوا و توضیحات کامل در لینک های بالا گذاشته شده..
آدرسی که باید برای ارتباط با کلایت تون رو بسازید بسته به برنامه سرور متفاوته(باید حتما برنامه سرور رو نوشته باشید یا سورس اون رو داشته باشید) که اون هم در لینک اون دوستمون کاملا توضیح داده بود.
به عنوان مثل:


string url ="www.yoursite.com/login.php?user=commander&pass=1234";

باید در سایت شما برنامهphp وجود داشته باشه که مقادیر user , pass رو بخواند



ممنون خیلی لطف کردید.فقط ی سوال
کد برنامه سرور java نمیتونه باشه؟
من ی دامنه دارم که میخوام ارسال رشته به آدرسم داشته باشم.برنامه ارسال را که لینکش رو گذاشتید .چه کد و تنظیماتی در سرور باید داشته باشم که دریافت را انجام بده؟