Java客户端服务器应用程序-地址已在使用中:connect

光荣


我目前正在开发一个简单的多人游戏,其中服务器客户端需要连接到服务器。

我的服务器由单个serverSocket组成。此serverSocket接受传入的连接,并将它们移交给启动单独线程的连接对象。

ServerSocket seso = new ServerSocket(12345);

while(true){
    Socket toClient = seso.accept();                
    new Connection(toClient); //creates a thread that opens streams etc
}

客户端打开一个新的套接字并连接到该服务器。

Socket toServer = new Socket();
toServer.setReuseAddress(true);
toServer.bind(new InetSocketAddress(65432)); //always using the same port   
toServer.connect(new InetSocketAddress(serverIP,12345));

现在,如果我使用断开与服务器的连接,toServer.close();然后尝试再次连接至服务器,则会收到“地址已在使用中:连接”异常。

使用TCPView,我可以看到客户端procress的状态更改为TIME_WAIT。但是由于这个原因,我不应该再次使用该端口setReuseAddress(true)吗?我使用的是错误的还是服务器问题?

我总是在toClient和toServer上调用.close()。但是,我总是必须等到套接字完全关闭(在TIME_WAIT之后),此客户端才能再次连接到服务器。

当我关闭整个应用程序时,套接字立即关闭(不在TIME_WAIT状态),此客户端可以连接到我的服务器。(并且ofc服务器中有一个连接重置异常)

在不总是关闭应用程序的情况下该怎么做?
谢谢你的帮助。

约翰·布林格

为了进一步说明我的观点,客户端/服务器协议要求服务器侦听客户端已知或可发现的端口(可以视为“服务器”的定义),但通常不要求客户端一个特定的端口。如果未将客户端套接字绑定到特定端口,则基础系统将自动透明地选择可用的(源)端口。

如果服务器由于某种原因依赖于从特定端口连接的客户端,则应重新评估设计的这一方面。如果不是这样,那么让客户端以这种方式连接就给自己制造了麻烦。这应该是您需要做的所有事情:

Socket toServer = new Socket();
toServer.connect(new InetSocketAddress(serverIP, 12345));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java中客户端/服务器应用程序的HTTP或FTP

来自分类Dev

Java中的客户端服务器聊天应用程序

来自分类Dev

Java中的多线程客户端服务器聊天应用程序

来自分类Dev

Android-Java客户端-服务器-AsyncTask崩溃应用程序中的Toast

来自分类Dev

Java中的客户端服务器聊天应用程序

来自分类Dev

在Java中的简单客户端/服务器应用程序中进行读/写

来自分类Dev

如何在JAVA中运行服务器-客户端应用程序

来自分类Dev

Java中的客户端服务器聊天应用程序,无需广播

来自分类Dev

客户端-服务器应用程序中的Google Play服务身份验证

来自分类Dev

Express应用程序的客户端如何知道服务器的地址?

来自分类Dev

如何从服务器在客户端计算机中执行Java应用程序?

来自分类Dev

如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

来自分类Dev

如何在Java中使用RUDP创建简单的服务器客户端应用程序?

来自分类Dev

C#中的Winsock服务器/客户端应用程序

来自分类Dev

RESTful Web应用程序中的客户端服务器体系结构

来自分类Dev

Internet上C ++中的客户端服务器应用程序

来自分类Dev

服务器客户端应用程序中的Springdata分页

来自分类Dev

C#中的简单客户端服务器应用程序

来自分类Dev

客户端断开连接后处理服务器应用程序中的线程

来自分类Dev

在客户端-服务器应用程序中更改圆圈的颜色

来自分类Dev

C#中的Winsock服务器/客户端应用程序

来自分类Dev

如何使用DatagramPacket和DatagramSocket类创建服务器-客户端应用程序?

来自分类Dev

在服务器-客户端应用程序中使用流量架构模式

来自分类Dev

服务器客户端应用程序中使用ObjectInputStream的ClassCastException

来自分类Dev

使用 socket.io 的聊天应用程序背后的客户端 - 服务器架构

来自分类Dev

Java中的客户端/服务器程序-流

来自分类Dev

如何在Rails应用程序中运行服务器端Faye客户端?

来自分类Dev

在 nodejs Web 应用程序中,firebase 配置的哪些部分位于服务器端和客户端

来自分类Dev

Struts Web应用程序:可重复使用的验证客户端和服务器端

Related 相关文章

  1. 1

    Java中客户端/服务器应用程序的HTTP或FTP

  2. 2

    Java中的客户端服务器聊天应用程序

  3. 3

    Java中的多线程客户端服务器聊天应用程序

  4. 4

    Android-Java客户端-服务器-AsyncTask崩溃应用程序中的Toast

  5. 5

    Java中的客户端服务器聊天应用程序

  6. 6

    在Java中的简单客户端/服务器应用程序中进行读/写

  7. 7

    如何在JAVA中运行服务器-客户端应用程序

  8. 8

    Java中的客户端服务器聊天应用程序,无需广播

  9. 9

    客户端-服务器应用程序中的Google Play服务身份验证

  10. 10

    Express应用程序的客户端如何知道服务器的地址?

  11. 11

    如何从服务器在客户端计算机中执行Java应用程序?

  12. 12

    如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

  13. 13

    如何在Java中使用RUDP创建简单的服务器客户端应用程序?

  14. 14

    C#中的Winsock服务器/客户端应用程序

  15. 15

    RESTful Web应用程序中的客户端服务器体系结构

  16. 16

    Internet上C ++中的客户端服务器应用程序

  17. 17

    服务器客户端应用程序中的Springdata分页

  18. 18

    C#中的简单客户端服务器应用程序

  19. 19

    客户端断开连接后处理服务器应用程序中的线程

  20. 20

    在客户端-服务器应用程序中更改圆圈的颜色

  21. 21

    C#中的Winsock服务器/客户端应用程序

  22. 22

    如何使用DatagramPacket和DatagramSocket类创建服务器-客户端应用程序?

  23. 23

    在服务器-客户端应用程序中使用流量架构模式

  24. 24

    服务器客户端应用程序中使用ObjectInputStream的ClassCastException

  25. 25

    使用 socket.io 的聊天应用程序背后的客户端 - 服务器架构

  26. 26

    Java中的客户端/服务器程序-流

  27. 27

    如何在Rails应用程序中运行服务器端Faye客户端?

  28. 28

    在 nodejs Web 应用程序中,firebase 配置的哪些部分位于服务器端和客户端

  29. 29

    Struts Web应用程序:可重复使用的验证客户端和服务器端

热门标签

归档