من یه برنامه با java در eclips برای ارسال اطلاعات با پروتوکل udp نوشتم که به یه مشکل بزرگ برخوردم و اونم اینه که ارسال فقط به رنج ip از 224.0.0.0 تا 239.0.0.0 انجام میشه و من میخوام به یک ip توی رنج 192.168.0.0. تا 192.168.255.255 انجام بشه . کسی میدونه مشکل از کجاست. من توی java تازه کارم یک هفته ست درگیرم .
البته توی کامپیوتر با نرم افزار wireshark به ای پی ها نگاه میکنم
اینم برنامه م
public class Main extends Activity
{
byte a;
int b;
class SocketListener implements Runnable
{
String str;
public void run()
{
DatagramSocket socket;
DatagramPacket packet;
byte[] buf = new byte[256];
System.out.println ("Thread running");
try
{
socket = new DatagramSocket (6000);
while (true)
{
final TextView t = (TextView)findViewById(R.id.textView1);
packet = new DatagramPacket (buf, buf.length);
socket.receive (packet);
System.out.println ("Received packet");
String s = new String (packet.getData());
CharSequence cs = t.getText ();
str = cs + "
" + s;
t.post(new Runnable()
{
public void run()
{
t.setText(str);
}
}
);
}
}
catch (IOException e)
{
Log.e(getClass().getName(), e.getMessage());
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView tv = (TextView)findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());
Button send1 = (Button)findViewById(R.id.button1);
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONN ECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if(ni != null && ni.isConnected()){
Toast.makeText(getApplicationContext(),"Connect wifi",Toast.LENGTH_LONG).show();
}
send1.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
if (a>0){
a=0;
tv.setText("Count:"+b);
}
final EditText et = (EditText)findViewById(R.id.editText1);
Editable e = et.getText();
String s = e.toString();
try
{
byte[] buf = new byte[256];
buf = s.getBytes ();
InetAddress address = InetAddress.getByName ("192.168.1.100");//("228.168.1.100");
final DatagramSocket socket = new DatagramSocket (5000);
final DatagramPacket packet = new DatagramPacket (buf, buf.length, address, 5000); //4567
new Thread ()
{
public void run ()
{
try
{
System.out.println ("About to send message");
socket.send (packet);
a=1;
b=b+1;
System.out.println ("Sent message");
// Toast.makeText(getApplicationContext(),"Sent message",Toast.LENGTH_LONG).show();
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
socket.close();
}
}.start ();
}
catch (SocketException e1) {}
catch (UnknownHostException e2) {}
}
});
Thread t = new Thread (new SocketListener ());
t.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}