程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Socket類的用法

Socket類的用法

編輯:C#入門知識

原文:http://www.cnblogs.com/Elijah/archive/2011/11/29/2268047.html

Socket可以理解成一個IP地址加一個端口,構成的一個“插座”...的確這個詞很形象,有了它,我們就相當於給程序上打了個插槽,於是其他程序就可以通過網絡“插”進來了~

在客戶端上我們只需要一個Socket,但是在服務端上,我們需要用一個Socket來監視某端口,然後根據來訪的客戶端來建立新的Socket負責數據通信。

 

代碼總結如下:
服務端:

復制代碼
 1 //1.服務器端定義用於監聽的Socket對象:
2 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
3 //設定IP和端口
4 IPAddress ip = IPAddress.Parse(IP地址字符串);
5 IPEndPoint point = new IPEndPoint(ip, int.Parse(端口字符串));
6 //把IP和端口綁定到Socket上
7 socket.Bind(point);
8 //設置可同時排隊的人數
9 socket.Listen(count);
10
11 //2.開啟新線程(Listen方法)進行監聽:
12 Thread th = new Thread(Listen);
13 th.IsBackground = true;
14 th.Start();
15
16 //3.在新線程(Listen方法中)循環監聽:
17 while (true)
18 {
19 //新建一個叫connect的Socket,監聽socket的IP地址和端口號
20 connect = socket.Accept();
21 //開啟新線程(RecMsg方法)用於接收消息
22 Thread th = new Thread(RecMsg);
23 th.IsBackground = true;
24 th.Start();
25 }
26
27 //4.在新線程(RecMsg方法中)循環接收消息:
28 while (true)
29 {
30 byte[] buffer = new byte[length];
31 //如果連接沒關
32 if (connect.Connected)
33 {
34 //用connect接收消息,返回接收到的長度
35 int length = connect.Receive(buffer);
36 //處理或顯示消息
37 ....
38 }
39 }
復制代碼

客戶端:

復制代碼
1 //1.客戶端端定義用於發送信息的Socket對象並連接服務器:
2 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
3 IPAddress ip = IPAddress.Parse(服務器IP地址字符串);
4 IPEndPoint point = new IPEndPoint(ip, int.Parse(服務器端口字符串));
5 client.Connect(point);
6
7 //2.定義好byte數組buffer,給服務器發送信息:
8 client.Send(buffer);
復制代碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved