2017-08-16 54 views
0

我有一個Python腳本創建TCP服務器,我想執行它的樹莓派開機。我已經把Python腳本中的.bashrc並執行上的引導,但它顯示了以下錯誤:TCP服務器(蟒蛇):地址已在使用

s.bind(('', 5555))
socket.error: [Errno 98] Address already in use

我已經創建了Matlab的TCP客戶端和communciation完美的作品。我可以從Raspberry Pi 3命令行send/recv data手動執行服務器並關閉套接字,但即使在正確關閉後,如果我重新啓動Raspberry Pi,啓動時仍會顯示錯誤。

我也曾嘗試s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1),但我仍然得到錯誤。我不想每次手動更改端口號,因此任何幫助將不勝感激。

+0

爲什麼用MATLAB標記?這真的很重要嗎?您是否在談論MATLAB專家? –

+0

你有沒有嘗試過不同的端口號? – dhdavvie

+0

@AndrasDeak的TCP客戶端在Matlab的託管,但是,是你是對的它不直接相關的Matlab的 – FarzanZaheer

回答

1

當您嘗試使用已在使用的端口號時,會出現此消息。

由於您使用.bashrc文件啓動了服務器進程,因此將嘗試在系統引導時啓動新的shell或在系統中啓動該進程。

This article讓你可以用其他的方式提出了一些建議。

注意,當你看到這條消息,它來源於反覆嘗試啓動服務器,但好消息是,你應該仍然能夠連接到服務器 - 消息確實意味着它已經運行。

+0

,所以我不知道我是否完全瞭解你的意見,是否當Raspberry Pi通電時,它會嘗試重複啓動服務器,當我嘗試SSH進入Rspberry Pi時,它會顯示錯誤?即使這種情況下,控制返回到命令行,我無法將客戶端連接到我的服務器。對不起,如果我沒有意義 – FarzanZaheer

+0

問題是,您的網絡可能還沒有啓動。您應該延遲運行腳本,或根據網絡服務將其作爲服務啓動。 – Sherlock70

+0

該消息暗示正在嘗試多次嘗試啓動服務器:「地址已被使用」意味着某個端口上已有內容正在監聽。因此,請考慮運行'.bashrc'文件的命令的條件。 – holdenweb