龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

总结.net同步异步SOCKET通讯和多线程技术(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
端口绑定和监听: 同步套接字服务器主机的绑定和端口监听 Socket类的Bind(绑定主机),Listen(监听端口),Accept(接收客户端的连接请求) Bind:原型:pub

端口绑定和监听:

同步套接字服务器主机的绑定和端口监听

Socket类的Bind(绑定主机),Listen(监听端口),Accept(接收客户端的连接请求)

Bind:原型:public void Bind(EndPoint LocalEP)参数为主机对象 IPEndPoint

Listen:原型:public void Listen(int backlog) 参数整型数值,挂起队列最大值

accept:原型:public socket accept() 返回为套接字对象

演示程序:

IPAddress myip=IPAddress.Parse(“127.0.0.1”);

IPEndPoint myserver=new IPEndPoint(myip,2020);

Socket sock=new Socket(AddressFamily.Inte.Network,SocketType.Stream,ProtocolType.Tcp);

Sock.Bind(myserver);

Sock.Listen(50);

Socket bbb=sock.Accept();

发送数据:方法1:socket类的send方法二.NetworkStream类Write

send原型:public int Send(byte[] buffer) 字节数组 

public int Send(byte[],SocketFlags)原型2说明,SocketFlags成员列表:DontRoute(不使用路由表发送),MaxIOVectorLength(为发送和接收数据的wsabuf结构数量提供标准值)None 不对次调用使用标志) OutOfBand(消息的部分发送或接收)Partial(消息的部分发送或接收) Peek(查看传入的消息)

原型三:public int Send(byte[],int,SocketFlags) 参数二要发送的字节数

原型四:public int Send(byte[],int,int,SocketFlags) 参数二为Byte[]中开始发送的位置

演示:

Socket bbb=sock.Accept();

Byte[] bytes=new Byte[64];

string send="aaaaaaaaaaaa";

bytes=System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());

bbb.Send(bytes,bytes.length,0);//将byte数组全部发送

.NetWordStream类的Write方法发送数据

原型:public override void write(byte[] buffer,int offset,int size) 字节数组,开始字节位置,总字节数

 

Socket bbb=sock.Accept();

.NetWorkStream stre=new NewWorkStream(bbb);

Byte[] ccc=new Byte[512];

string sendmessage="aaaaaaaaaaaaaa";

ccc=System.Text.Encoding.BigEndianUnicode.GetBytes(sendmessage);

stre.Write(ccc,0,ccc.length);

接收数据:Socket类Receive.NetworkStream类Read

Socket类Receive方法

原型:public int Receive(byte[] buffer)   

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

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

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

.....

Socket bbb=sock.Accept();

........

Byte[] ccc=new Byte[512];

bbb.Receive(ccc,ccc.Length,0);

string rece=System.Text.Encoding.BigEndianUnicode.GetString(ccc);

richTextBox1.AppendText(rece+"\r\n");

 

.NetworkStream类的Read方法接收数据

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


精彩图集

赞助商链接