c# ,socket編程的一些常用方法


1 命名空間

  需要添加的命名空間

using System.Net;
using System.Net.Socket;

2 構造新的socket對象

socket原型:

public socket (AddressFamily addressFamily,SocketType sockettype,ProtocolType protocolType)

(1) AddressFamily 用來指定socket解析地址的尋址方案,Inte.Network標示需要ip版本4的地址,Inte.NetworkV6需要ip版本6的地址;

(2) SocketType 參數指定socket類型,Raw支持基礎傳輸協議訪問,Stream支持可靠,雙向,基於連接的數據流;

(3) ProtocolType 表示socket支持的網絡協議,如常用的TCP和UDP協議。

3 定義主機對象
(1) IPEndPoint類

原型:

a)  

public IPEndPoint(IPAddress address,int port)  

參數address可以直接填寫主機的IP,如"192.168.2.1";

b)

public IPEndPoint(long address,int port)

參數address整型int64如123456,參數port端口int32,如6655。

(2) 利用DNS服務器解析主機,使用Dns.Resolve方法

原型:

public static IPHostEntry Resolve(string hostname)

參數:待解析的主機名稱,返回IPHostEntry類值,IPHostEntry為Inte.Net主機地址信息提供容器,該容器提供存有IP地址列表,主機名稱等。

(3) Dns.GetHostByName獲取本地主機名稱

原型:

public static IPHostEntry GetHostByName(string hostname)

(4) GetHostByAddress

原型:

a)

public static IPHostEntry GetHostByAddress(IPAddress address)

參數:IP地址。

b)

public static IPHostEntry GetHostByAddress(string address)

參數:IP地址格式化字符串。

3.4 端口綁定和監聽

  同步套接字服務器主機的綁定和端口監聽,Socket類的Bind(綁定主機),Listen(監聽端口),Accept(接收客戶端的連接請求)。

(1) Bind

原型:

public void Bind(EndPoint LocalEP)

參數為主機對象 IPEndPoint

(2) Listen

原型:

public void Listen(int backlog)

參數整型數值,掛起隊列最大值

(3) accept

原型:

public socket accept()

返回為套接字對象

3.5 socket的發送和接收方法

(1) 發送數據

a)socket類的send方法

原型一:

public int Send(byte[] buffer)

參數:待發送的字節數組;

原型二:

public int Send(byte[],SocketFlags)

SocketFlags成員列表:

DontRoute不使用路由表發送,

MaxIOVectorLength為發送和接收數據的wsabuf結構數量提供標准值,

None 不對次調用使用標志,

OutOfBand消息的部分發送或接收,

Partial消息的部分發送或接收,

Peek查看傳入的消息。

原型三:

public int Send(byte[],int,SocketFlags)

參數二要發送的字節數

原型四:

public int Send(byte[],int,int,SocketFlags)

參數二為Byte[]中開始發送的位置

b) NetWordStream類的Write方法

原型:

public override void write(byte[] buffer,int offset,int size)

參數分別為:字節數組,開始字節位置,總字節數。

(2) 接收數據

a) Socket類Receive方法

原型一:

public int Receive(byte[] buffer) 

原型二:

public int Receive(byte[],SocketFlags)

原型三:

public int Receive(byte[],int,SocketFlags)  

 原型四:

public int Receive(byte[],int,int,SocketFlags)

Socket類Receive方法的相關參數可參看Socket類Send方法中的參數。

b) NetworkStream類的Read方法

public override int Read(int byte[] buffer,int offset,int size)

參數可參看NetworkStream類的Write方法。

 

Socket.Available 屬性

獲取已經從網絡接收且可供讀取的數據量。

 

命名空間:   System.Net.Sockets
程序集:  System(System.dll 中)

從網絡接收的、可供讀取的數據的字節數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM