查看完整版本: Sockets的接收端問題
頁: [1]

ggnnyy 發表於 2015-5-19 05:35 PM

Sockets的接收端問題

各位老師好:
我在主機端設timer每幾秒就用Socket向client端發出訊息,
那在client端應該是不用再下timer固定接收吧?
我是想把收到的資訊呈現在textBox上
<div></div>

sam30525sam 發表於 2015-5-19 07:23 PM

client與server連上後,雙方都可以互相溝通,
接收者永遠都是被動接收,
接收跟timer無關,也不需要用到timer。

ggnnyy 發表於 2015-5-20 09:27 AM

sam30525sam 發表於 2015-5-19 07:23 PM static/image/common/back.gif
client與server連上後,雙方都可以互相溝通,
接收者永遠都是被動接收,
接收跟timer無關,也不需要用到tim ...

sam大你好:
請問那server端的程式關閉的話,用socket所佔的資源會自動釋放掉嗎?
因為有支援多人連線,有使用到多執行緒
我是參考網路一些範例做出來,很多地方也要懂不懂的...
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

sam30525sam 發表於 2015-5-20 01:26 PM

ggnnyy 發表於 2015-5-20 09:27 AM static/image/common/back.gif
sam大你好:
請問那server端的程式關閉的話,用socket所佔的資源會自動釋放掉嗎?
因為有支援多人連線,有 ...

程式關閉,資源會釋放掉,
不會釋放掉的話,代表thread沒設定為背景執行緒。

這年代不用自己寫socket,
請多利用第三方元件。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

ggnnyy 發表於 2015-5-20 05:44 PM

本帖最後由 ggnnyy 於 2015-5-20 05:45 PM 編輯

sam30525sam 發表於 2015-5-20 01:26 PM
程式關閉,資源會釋放掉,
不會釋放掉的話,代表thread沒設定為背景執行緒。



sam大您好:
您所指的第三方元件是什麼?
另外請問您 我在client端想按一個開始按鈕之後把接收到的訊號顯示在textBox上(或dataGridView),
我的作法如下:
private void button2_Click(object sender, EventArgs e)
        {
            ip = IPAddress.Parse("192.168.10.XX");
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            clientSocket.Connect(new IPEndPoint(ip, 6XXX));
            int receiveLength = clientSocket.Receive(result);  
            textBox1.Text = "接收伺服器訊息:\r\n" + Encoding.Unicode.GetString(result, 0, receiveLength);
        }
我知道這樣只有每按一下才會更新一次,想請問您該如何修改成才可以持續更改內容?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

sam30525sam 發表於 2015-5-20 08:23 PM

ggnnyy 發表於 2015-5-20 05:44 PM static/image/common/back.gif
sam大您好:
您所指的第三方元件是什麼?
另外請問您 我在client端想按一個開始按鈕之後把接收到的訊號顯示 ...


第三方元件你不知道…
json處理你是用DataContractJsonSerializer、JavaScriptSerializer、Json.Net?
前兩個是內建的,最後一個就是所謂的第三方元件,去找就好了,
麻煩請自行google。

關於接收,麻煩請看MSDN,
Socket 類別
非同步用戶端通訊端範例
不要只是把別人的code複製貼上,
重要的是為什麼要這樣寫?有沒有其他寫法?
Socket那麼多method你確定你有全部看過?都知道在做什麼?

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

hatakc56923us 發表於 2015-5-21 12:21 AM

yes, no need timer on client side, the client should listen the whole time

Jeepluo 發表於 2015-5-30 01:26 PM

記得如果同時要讀取資料且又要顯示資料的話,要用多執行緒的方式,不然會出現呆滯或資料讀取不完全的情形。因為同時間要做兩件的問題。

kuolung1 發表於 2015-7-31 09:19 PM

CLIENT 端不用 TIMER
Server 端,會自動䆁放資源,但是要一段時間,不是馬上放掉

kevinkao809 發表於 2015-8-30 07:53 PM

建議使用非同步的 Socket, Google 一下 C# Asnc Socket Example. <br><br><br><br><br><div></div>

rockkim 發表於 2015-9-12 07:06 AM

Client端只需要去Listen而已,並不需要使用timer

smallanan 發表於 2015-9-23 11:50 PM

本帖最後由 smallanan 於 2015-9-23 11:52 PM 編輯

不知道你的用途為何

但依照你說的架構,我會在接收端用一個backgroundworker裡面有while(true)的回圈跑socket(會一直接受是否有訊號),做成類似網頁服務這樣,收到特定訊息後跑完程式並回傳結果

供你參考~
頁: [1]