首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到C#服务器的Java客户端:连接超时

连接到C#服务器的Java客户端:连接超时
EN

Stack Overflow用户
提问于 2017-07-15 17:51:50
回答 1查看 252关注 0票数 0

我正在尝试将两个Android设备连接到一个c#服务器,但我总是得到一个连接超时。java代码很简单:

代码语言:javascript
复制
Socket socket = new Socket(mAddress, PORT);

如果我在pc上启动一个java-server,那么连接就成功了。所以这不是网络/防火墙的问题。但是我的c#服务器就是不接受任何连接,代码:

代码语言:javascript
复制
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!");
    }

我也尝试了System.Net.Sockets.Socket而不是System.Net.Sockets.TcpClient,也不起作用。

非常感谢

编辑:代码看起来非常好。如果我通过Visual Studio运行exe而不是调试模式,一切都会正常工作。因此,调试模式会以某种方式阻止服务器套接字正常工作。你知道为什么会发生这种情况吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-15 18:55:15

代码语言:javascript
复制
// 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);            
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45116837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档