简体   繁体   中英

Java-Client connecting to C# Server: Connection Timeout

I am trying to connect two Android devices to ac#-server and I always get a connection timeout. The java-code is simple:

Socket socket = new Socket(mAddress, PORT);

If I start a java-server on the pc then the connection is successful. So its not a network/firewall problem. But my c#-server just won't accept any connections, code:

private TcpListener serverSocket;
private TcpClient clientSocket1;
private TcpClient clientSocket2;

    private void Form1_Load(object sender, EventArgs e)
    {
        serverSocket = new TcpListener(IPAddress.Any, port);
        clientSocket1 = default(TcpClient);
        clientSocket2 = default(TcpClient);
        serverSocket.Start();

        clientListenerThread = new Thread(wait4Clients);
        clientListenerThread.Start();

    }
    private void wait4Clients()
    {
        logToConsole("Clientlistener started");
        clientSocket1 = serverSocket.AcceptTcpClient();
        logToConsole("Client No 1 started!");

        clientSocket2 = serverSocket.AcceptTcpClient();
        logToConsole("Client No 2 started!");
    }

I also tried System.Net.Sockets.Socket instead of System.Net.Sockets.TcpClient, didnt worked either.

Thanks a lot

EDIT: Seems the code is perfectly fine. If I run the exe and not debug mode via Visual Studio, everything works. So the debug mode somehow prevents the server socket from working correctly. Any ideas why this happens?

// TCP Server C#, look at [msdn][1]
try
{
  // Set the TcpListener on port 8080 of Any IP Address.
  TcpListener server = new TcpListener(IPAddress.Any, 8080);

  // Start listening for client requests.
  server.Start();

  // Buffer for reading data
  Byte[] bytes = new Byte[1024];
  String data = null;

  // Enter the listening loop.
  while(true) {

    Console.Write("Waiting for a connection... ");

    // Perform a blocking call to accept requests.
    // You could also user server.AcceptSocket() here.
    TcpClient client = server.AcceptTcpClient(); 

    Console.WriteLine("Connected!");

    // Get a stream object for reading and writing
    data = null;
    NetworkStream stream = client.GetStream();
    int i;

    // Loop to receive all the data sent by the client.
    while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
    {   
      // Translate data bytes to a ASCII string.
      data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
      Console.WriteLine("Received: {0}", data);

      // Process the data sent by the client.
      data = data.ToUpper();

      byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

      // Send back a response.
      stream.Write(msg, 0, msg.Length);
      Console.WriteLine("Sent: {0}", data);            
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM