主題:9360網(wǎng)絡(luò)連接的問題 共有44039人關(guān)注過本帖 |
---|
bingdongcha |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
9360網(wǎng)絡(luò)連接的問題 Post By:2013-4-25 10:45:00 [只看該作者]
購買的9360的開發(fā)板和底板,使用光盤中的網(wǎng)絡(luò)程序step3_tcptest。目標(biāo)板9360做服務(wù)器,開發(fā)主機(jī)做客戶端。 問題是:只能有一個客戶端可以連接到目標(biāo)板9360服務(wù)器。用第二臺電腦連接目標(biāo)板9360服務(wù)器時,第一臺電腦的連接就自動斷了。 因?yàn)槲覀児こ虒?shí)際應(yīng)用時,需要6臺客戶端連接。 這個可以滿足么?可以給個例子么?萬分感謝!!!!! |
單帖管理 | 引用 | 回復(fù) |
yy |
2樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-25 15:22:00 [只看該作者]
例程主要為提供測試和代碼方面的參考,實(shí)際應(yīng)用的時候需要根據(jù)具體的應(yīng)用需求來編碼。
tcp程序里,tcp server端通過accept函數(shù)得到的tcp client連接的SOCKET,然后通過send函數(shù)發(fā)送消息,recv來收消息,closesocket來關(guān)閉等。 例程里封裝成了一個TCP的SERVER類,但是這個SERVER類只弄一個SOCKET m_sockets用來和客戶端通信,這就等于是默認(rèn)只和一個客戶端通信。按你的需求,你需要至少6個這樣的SOCKET,比如做成SOCKET m_sockets[6];然后創(chuàng)建6個線程,分別負(fù)責(zé)與6個客戶端的通信。同時你在accept后,可以先判斷當(dāng)時有多少客戶端已經(jīng)連上了在用了,哪些SOCKET還未使用,如果連接已經(jīng)滿了,就可以直接closesocket拒絕客戶端的連接。你還可以在accept后判斷客戶端的IP地址,然后決定是否closesocket。
|
單帖管理 | 引用 | 回復(fù) |
bingdongcha |
3樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-25 16:29:00 [只看該作者]
謝謝,我大概明白了,還想請教下。在這個程序里有2個類TCPCustom_CE和TCPServer_CE。 TCPCustom_CE類中的SocketDataThread線程是處理監(jiān)聽到的客戶端的socket通訊事件的。 想了2個方法謝謝幫忙指點(diǎn)迷津。 第一個是您這個方法,在TCPServer_CE類中定義6個socket接收客服端連接,每ACCEPT 一個連接就創(chuàng)建一個線程處理通訊。這樣可能就不需要TCPCustom_CE這個類了!!
第二個是用TCPCustom_CE定義6個對象處理來之6臺客戶端的請求和數(shù)據(jù)處理。感覺這個方法符合面向?qū)ο蟮睦碚?font face="Verdana">。可TCPCustom_CE定義的6個對象,是不是每個對象都有一個自己的SocketDataThread線程來處理數(shù)據(jù)???? 包含線程的類 定義對象后是否也同時創(chuàng)建了一個線程呢??如果創(chuàng)建了,那么各個對象的線程之間相互影響么??
[此貼子已經(jīng)被作者于2013-4-25 16:31:08編輯過]
|
單帖管理 | 引用 | 回復(fù) |
yy |
4樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-26 14:25:00 [只看該作者]
這兩個類只是例程封裝的兩個類,你完全可以根據(jù)你的需求自己封裝你自己的TCP類,你可以自己定義你的類名,定義你的類的方法,以及你自己的收發(fā)線程名,你希望封裝成多少個類都是你自己決定的。
如果你只是希望改動最少的代碼,你可以把例程里SOCKET m_sockets;改成SOCKET m_sockets[6];然后依次accept,然后收發(fā)線程也需要6個,傳入線程的參數(shù)也要修改下,線程需要知道自己對應(yīng)的是哪個SOCKET,即哪個TCP客戶端,還有些別的地方也要做相應(yīng)的修改。
我還是建議你重頭寫個,這樣更容易理解些。 |
單帖管理 | 引用 | 回復(fù) |