作者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