2012-03-28 89 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