2012-03-28 86 views
1

我创建了这个连接到游戏的游戏机器人,并开始播放。 我的问题是,我无法启动这些以上的其中一个,因为另一个则无法工作。多个java套接字连接

如果我运行同一个程序的两个实例,套接字互相干扰,可能是有可能的吗?毕竟,他们使用相同的端口连接到相同的IP?

有时在我关闭后(刚刚关闭cmd)程序无法再次连接。那是因为我没有把关系关闭吗? 我希望这已经足够其他我只需要发布我的源代码

此致敬礼。

+0

使每个“bot”运行在它自己的线程中。这会让你的程序同时做更多的事情。只是谷歌“线程Java”,你会得到所有你需要的信息 – 2012-03-28 08:19:33

+0

为什么不能启动多个客户端?是否有错误记录或显示?是你自己的游戏,还是什么?这个论坛是针对具体的编程问题,通常与源代码或类似的相关。不是一般的“为什么我的程序不能工作”类型的支持。有关提问的指导,请参阅http://stackoverflow.com/faq。 – pap 2012-03-28 08:22:28

回答

1

如果您正在使用特定的TCP端口,那么存在一段关闭等待期,此端口暂时不能被临时声明。也有多个程序不能听同一个TCP端口。使用线程。

1

可以多次连接到同一个套接字/端口。其实一个套接字是一个双重对等体:{client ip/client port} {server ip/server port}。当您连接到服务器时,您的客户端端口将被动态分配。每个客户端都会有一个新的和不同的客户端端口。所以它应该工作,除非服务器端禁止它。

1

你应该有一个侦听多个连接的服务器。一台服务器绑定到一个端口,一旦该端口正在使用,另一个应用程序不能使用它。所以对于服务器只有一个实例。只要服务器接受多个连接,多个客户端就可以连接到此IP /端口。

如果客户端连接到服务器而其他客户端停止工作,这可能是因为服务器不支持多个客户端。为此,您需要在服务器中使用多线程。服务器应该接受一个客户端套接字并用它自己的StreamReader/Writer对象创建一个客户端的新实例。

http://tutorials.jenkov.com/java-multithreaded-servers/multithreaded-server.html

+0

我没有访问服务器的权限。或源代码。但这是一款游戏,所以我确信它可以接受多个连接。我的问题是我的客户端不会连接多个实例。虽然我想让10倍的客户端从我的电脑运行 – 2012-03-28 08:32:04

+1

也许他们限制了服务器端的连接。即每个IP地址1个线程。如果您知道要发送到服务器的命令,请尝试打开多个Telnet实例并连接到服务器。如果它以这种方式工作,那么它必须是你的代码,否则服务器会阻止你连接多个客户端。 – 2012-03-28 08:36:36