Could maybe somehow be caused by the DLL injection that is done, in which case good luck getting any info about that. I don't know if this is the same issue that the tool Wisteso linked helps with on Linux machines, it's really unclear what the issue there even is. Maybe, though.
For posterity, you can diagnose whether the problem with server select is packet loss or a problem with the client using Wireshark. The process is reasonably user-friendly:
1. Install
Wireshark. If you're on Windows, the installer will probably ask you for permission to install the special network driver it uses at some point; agree to that. If you're on Linux, there's a good chance your distro came with Wireshark already installed.
2. Start Wireshark. On the left pane you'll see your available network interfaces. (If you're on Linux, you may need to start wireshark from the terminal with "sudo wireshark" to see anything here.)
[You must be logged in to view images. Log in or Register.]
Select your interface and hit the "Start" button just above. If you're on Wi-Fi, you'll want the Wi-Fi interface. Otherwise you'll probably need one of the Ethernet interfaces. (These are called wlan0 and eth0 on Linux.)
3. The packet capture interface will open up, and if you have a browser open or anything you'll probably start getting spammed with packets. We want to filter out all packets not related to the EQEmu login server:
[You must be logged in to view images. Log in or Register.]
Click on the "Filter" text area near the top of the window and enter the following
and then hit Enter. Any packets that were in the main window should be filtered out.
4. Start up EQ and log in. When you get to server select, go back to Wireshark and hit the red "Stop" button just above the filter text area.
[You must be logged in to view images. Log in or Register.]
You should see a number of captured packets. In particular, you should see a run of 10 or so packets from port 5998 with a length of 554, followed by one with a shorter length (100 in the screenshot).
This is the server list. If you see these packets, you most likely don't have packet loss.
If you want to be extra sure, you can briefly look at the contents of the packets to see if everything lines up correctly:
[You must be logged in to view images. Log in or Register.]
Find the first packet with a length of 554 and click on the "Data" header toward the bottom of the window, so that the data section of the packet is highlighted, as in the screenshot.
The part with the purple box around it is the client's "Protocol" header. The first two bytes say what kind of packet this is; for all the packets in our sequence, these should be "00 0d". The next two bytes ("00 02" in the screenshot) are a sequence number; you can check this for all the packets in the sequence to see if they were received in order. In my case, the first packet is "00 02", the next is "00 03", and so on until it reaches "00 0e" in the last packet since there were 13 in the sequence (it's hexadecimal, "00 0a" comes after "00 09").
In the first packet only, the part surrounded by the red box in the screenshot is the total length for our sequence of server list packets. In the screenshot, it is "00 00 18 01", which we can enter into the hexidecimal field of a
hex calculator to find out equals 6145 in decimal.
We need to do a little calculation to find out the effective length of our sequence, since the headers aren't counted.
First, add up the total length of all the packets in the sequence with all of the overhead. In my case, this is:
(554 * 12) + 100 = 6748
Next, subtract 46 for each packet to remove all the per-packet overhead:
6748 - (46 * 13) = 6150
Then, subtract 4 to account for the "total length" field from the first packet:
6150 - 4 = 6146
This is our final value. You'll notice that we were looking for 6145 but got 6146; this is okay, since the calculations the server uses are not exact. The actual length may be a little higher than the expected value. If the actual length is
less than the expected length, then we have a problem: we didn't get all the packets we need. Packet loss!