頁:
[1]
Sockets的接收端問題
各位老師好:我在主機端設timer每幾秒就用Socket向client端發出訊息,
那在client端應該是不用再下timer固定接收吧?
我是想把收到的資訊呈現在textBox上
<div></div> client與server連上後,雙方都可以互相溝通,
接收者永遠都是被動接收,
接收跟timer無關,也不需要用到timer。 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> 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: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> 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> yes, no need timer on client side, the client should listen the whole time 記得如果同時要讀取資料且又要顯示資料的話,要用多執行緒的方式,不然會出現呆滯或資料讀取不完全的情形。因為同時間要做兩件的問題。 CLIENT 端不用 TIMER
Server 端,會自動䆁放資源,但是要一段時間,不是馬上放掉 建議使用非同步的 Socket, Google 一下 C# Asnc Socket Example. <br><br><br><br><br><div></div> Client端只需要去Listen而已,並不需要使用timer 本帖最後由 smallanan 於 2015-9-23 11:52 PM 編輯
不知道你的用途為何
但依照你說的架構,我會在接收端用一個backgroundworker裡面有while(true)的回圈跑socket(會一直接受是否有訊號),做成類似網頁服務這樣,收到特定訊息後跑完程式並回傳結果
供你參考~
頁:
[1]