作者godman362 (青)
看板NUU_CSIE
標題[筆記] C# Socket (1)
時間Sat May 30 11:07:38 2009
修電腦當中,很無聊
所以來打一下C#的Socket筆記
有興趣就看,沒興趣就算
另外,以下程式碼的部份不會詳述
同之前的delegate和event一樣
以免淳廳妹妹誤會了
Main和
main的意思,因為我只是打個大概
以下進入正題:
C#裡面有兩種不同的
Server和
Client
而這個部份,我不是就
Potocol來說,我是就
使用方法而言
怎麼說?
一般來講,在寫Winsock或是Linux底下的Socket也好
都是用Socket直接硬幹
要當Server就要
Bind和
Listen,最後等
Accept
當Client,就是很直接的
Connect
好,在C#裡面,當然也保留了傳統的硬幹方式-Socket
其中又多了幾種當Client和Server的方式:
Client:
TcpClient
UdpClient
Server:
TcpListener
用TcpClient和UdpClient是代表不同的Potocol Client端
而TcpListener則是用來當Tcp Potocol的Server端
那為什麼沒有UdpListener?
不知道,也沒研究過
以下,先來介紹一下Socket的用法
要用Socket,則必須宣告出Socket的物件來用
Socket ServerSocket =
new Socket(Address.Internet_IPv4, Stream, TCP);
以上這行,表示你需要一個Socket
建立的通道是Internet,且以Tcp為Potocol,並用Stream傳輸
Tcp一定搭配Stream,所以這個寫法算是鐵則
而Udp則是搭配Datagram,這也算是鐵則
以上兩條,我迄今沒有看過例外,有例外請在推文補上,我會修改
宣告這行後,表示有Socket物件可以使用
接著則是要看個人,看是要把他當Client或是Server來用
當Client,則直接Connect到你要的
IPAddress和
Port
當Server,則得像上面所說得,依序做
Bind、
Listen、
Accpet三個步驟
Accept後,才開始接收資料
像Server 則如下:
ServerSocket.Bind(LocalHost);
//將自己的IPAddress和Port做Bind
ServerSocket.Listen(Client Limit);
//限定Client的連結上限
ServerSocket.Accpet();
//等待Client的連結
當Client則如下:
ServerSocket.Connect(RemoteHost);
//連線到遠端主機的位址和Port
至於接收資料又有不同的作法,有
同步和
非同步
最後,傳輸資料結束時,記得將自己所開的Socket關閉
如:ServerSocket.Close();
這篇大概到這邊
有時間有機會才會有下一篇
下次見。
Author :
SeptemHill
--
要
感謝的人太多了,那就
謝天吧
要
改得程式碼太多了,那就
改天吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.35.31
1F:推 p29892:期待下一篇 05/30 12:04
2F:推 littleast:我覺得簽名檔好中肯XD 05/30 13:21
3F:→ godman362:程式寫多了你也會有這種感觸的,學弟 05/30 15:32
4F:推 sct830:為啥我是妹妹= =+ 大小寫是環境的關係吧... 05/30 18:02
5F:→ godman362:我高興叫你妹妹~啦啦啦啦啦~ 05/30 19:08
6F:→ godman362:我的意思是說,怕你以為是我打錯 05/30 19:08
7F:→ godman362:我只是打出再哪個函數應該做哪些事情 05/30 19:09
8F:→ godman362:沒有注重函數的名稱和我打出來的東西可不可以Compile 05/30 19:09
9F:→ godman362:我只有寫觀念,程式實做再這邊講會很長很長 05/30 19:10
10F:推 osanaosana:推... 05/31 14:47