Hi Paul,
ah, so this seems to be an IPv6/IPv4 issue. If you enable IPv6 in the kernel, the following should hopefully work:
Start the server explicitly using an IPv4 address, e.g. ./basexserver -n 127.0.0.1
Connect to the server using this IPv4 address: ./basexclient -n 127.0.0.1
You could also try to use the java option -Djava.net.preferIPv4Stack=true when using localhost.
The problem seems to be that the server is only bound to the IPv6 address, but you try to access it using an IPv4 address. Maybe the DNS lookup for localhost is doing something rather strange.
You can also use IPv6 if you want to by explicitly setting an IPv6 address on both client and server.
Cheers, Dirk
On 06/18/2013 01:06 PM, Paul Collins wrote:
Hi,
Thank you for your answer!
I have already tested the latest snapshot. I don't have a firewall:
$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
Using BaseX71 gives me the following error:
$ java -cp BaseX71.jar org.basex.BaseXClient -d java.net.ConnectException: Network is unreachable java.net.PlainSocketImpl.socketConnect(Native Method) java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) java.net.Socket.connect(Socket.java:529) org.basex.server.ClientSession.<init>(ClientSession.java:117) org.basex.server.ClientSession.<init>(ClientSession.java:83) org.basex.BaseXClient.session(BaseXClient.java:58) org.basex.BaseX.<init>(BaseX.java:68) org.basex.BaseXClient.<init>(BaseXClient.java:38) org.basex.BaseXClient.main(BaseXClient.java:25) Can't communicate with the server.
However, doing nc afterwards manually works:
$ nc localhost 1984 34281810542423
Unfortunately, I have no other system available to test and I can't find another client that's working out of the box. Have I missed one?
BaseX should try to connect to localhost port 1984 as a default, shouldn't it? Is there a possibility to find out to which host/port the BaseX client is trying to connect to and what fails? Does a host lookup fail? Is the port unreachable? I think there are some possibilities to improve logging even in the case that the client can't connect/communicate with the server.
However, in the meantime I have found a solution: disabling IPv6 via boot option for the kernel works. Without IPv6 the BaseX client can connect to the BaseX server.
Kind regards, Paul
On Mon, Jun 10, 2013 at 12:26 PM, Dirk Kirsten dk@basex.org wrote:
Hello Paul,
hmm, this sounds rather strange to me. When I do listen on the pseudo-device and start a connection attempt with basex-client (simply running ./basexclient, so using the standard port 1984) I get the following expected behaviour: [1].
If you can't see any TCP handshake you certainly will only get the message "Can't communicate with the server.", because the client does not see any open socket. There is also not much room for improvement here in logging, because the client does a simple socket connect and if there is no server listening this will just fail without further information.
It really seems like the basexclient is doing nothing, but I can't think of any reason why it shouldn't. Ok, so here is what you could try:
- Please use the latest snapshot and test again. I also tested with the
7.6. release (and it worked for me), so I don't have much hope that it will resolve your issue, but its worth a shot. 2. Do you have any kind of firewall running? It seems really unlikely that this is the issue as you can use netcat on these ports, but still... 3. Do you have the possibility to test on another machine? I would be really interested, because this issue seems to be caused by some configuration of your system or maybe its a Debian issue (which I doubt, because if Debian failed at a simple socket communication I would consider this a major bug...). 4. Maybe you could test with another client (see [2]) and see if that works.
Cheers, Dirk
[1] http://postimg.org/image/5u874w54l/ [2] http://docs.basex.org/wiki/Clients
On 06/10/2013 11:52 AM, Paul Collins wrote:
Hi,
I have tried port 1984 as well as port 2000. When the server is listening on port 1984 I tried to connect to port 1984 with the client, and when the server was running on port 2000 I have tried to connect to port 2000. Sorry for interchanging the 2 tries in my e-mails.
I capture the network traffic by running wireshark, selecting the pseudo interface that captures all network traffic: "Pseudo-device that captures on all interfaces: any".
If I start netcat on localhost port 2000 or 1984 and capture the network traffic with that, everything works fine. I see the TCP handshake and I see the data sent from the nc client to the nc server with wireshark.
When starting the server and connecting to it via nc I can also capture the traffic. For me it looks like as if the basex client just does not do anything. Unfortunately, the debugging output is not really helping -- there is no debug output :(
Kind regards, Paul
On Wed, Jun 5, 2013 at 1:03 PM, Dirk Kirsten dk@basex.org wrote:
Hi Paul,
If you are running the server on the standard port 1984, why are you trying to connect to port 2000? If this is not working it is not surprising at all...
Also, if you can not even see the TCP handshake I strongly assume there is something wrong with either your capturing attempt or your network configuration. I can see the TCP handshake happening on my machine quite well (running Ubuntu 12.04) and I don't see any reason why it should not happen on your system as well. If the problem persist could you maybe explain in more detail how you try to capture the network traffic?
Cheers, Dirk
On 06/05/2013 12:56 PM, Paul Collins wrote:
Hi,
Christian Grün christian.gruen@gmail.com wrote:
unfortunately I can't tell out of the box what might be the reason. I only know that there are several BaseX instances running on Debian.
I neither used nor installed any Debian packages of BaseX, only the BaseX 7.6 and BaseX 7.7 jar files from the BaseX website :(
Have you also tried to run the standard scripts in the zip distribution?
I have downloaded BaseX 7.6.zip now, went to basex/bin and executed ./basexclient -d -- same behavior as before, I have to enter username/password, then at an instant, the error message "Can't communicate with the server." occurs.
You could additionally use the debug flag (-d), which may give you more hints.
I have already tried the debug flag, however, there is no more additional output :(
The server instance is running as far as I can tell, there is a port 1984 open with the java process and the logging file says
[time...] SERVER admin OK Server was started (port: %) 1984
Are there any other debugging mechanisms for the client?
Kind regards, Paul _______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
-- Dirk Kirsten, BaseX GmbH, http://basex.org |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
-- Dirk Kirsten, BaseX GmbH, http://basex.org |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22