ti ringrazio della risposta però nel frattempo ho risolto parzialmente il problema in quanto sul pc fisso ho installato asterisk ( su windows xp ) e l'ho configurato in questo modo aggiungendo in fondo al file sip.conf:
codice:
[test]
type=friend
username=test
secret=test
host=dynamic
una volta avviato asterisk sul pc fisso con queste impostazioni, mi sposto sul portatile dove ho scritto un pezzo di codice java che invia tramite socket una richiesta di register in questo modo:
--192.168.1.106 pc portatile dal quale parte il pacchetto
--192.168.1.104 pc fisso con asterisk
codice:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Client_test {
private DatagramSocket s;
public Client_test(){
try {
s = new DatagramSocket();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
Client_test c = new Client_test();
c.register();
//c.invite();
}
public void register(){
String msg = "REGISTER sip:test SIP/2.0\r\n" +
"Via: SIP/2.0/UDP test:5060;branch=z9hG4bKcdb10d3435e84f30b9db93d3c586600a\r\n" +
"From: <sip:test:test@192.168.1.106>\r\n" +
"auth=test:test@192.168.1.104\r\n"+
"To: <sip:test@192.168.1.104>\r\n" +
"Call-ID: 2537450899\r\n"+
"CSeq: 1 REGISTER\r\n" +
"Max-Forwards: 360\r\n"+
"User-Agent: C450 My_pc\r\n"+
"Expires: 180\r\n"+
"Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, INFO\r\n"+
"Content-Length: 0\r\n"+
"\r\n";
DatagramPacket p = new DatagramPacket(msg.getBytes(), msg.getBytes().length);
try {
p.setAddress(InetAddress.getByName("192.168.1.104")); //indirizzo pc fisso con asterisk
//p.setAddress(InetAddress.getLocalHost());
p.setPort(5060);
s.send(p);
s.receive(p);
System.out.println(new String (p.getData()));
System.out.println("");
s.receive(p);
System.out.println(new String (p.getData()));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
mandando il pacchetto ricevo 2 risposte visibili anche tramite wireshark:
codice:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP test:5060;branch=z9hG4bKcdb10d3435e84f30b9db93d3c586600a;received=192.168.1.106
From: <sip:test:test@192.168.1.106>
To: <sip:test@192.168.1.104>
Call-ID: 2537450899
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Contact: <sip:test@192.168.1.104>
Content-Len
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP test:5060;branch=z9hG4bKcdb10d3435e84f30b9db93d3c586600a;received=192.168.1.106
From: <sip:test:test@192.168.1.106>
To: <sip:test@192.168.1.104>;tag=as5c1f2b09
Call-ID: 2537450899
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
WWW-Authenticate: Digest
a questo punto però non capisco come mai non mi da l'autenticazione per la registrazione....dove sto sbagliando??
vi ringrazio come sempre per il vostro interesse e la vostra collaborazione