当前位置:编程学习 > C#/ASP.NET >>

C# Socket基本编程

 

//Socket基本编程  

 

//服务端:  

 

using System.Net;  

 

using System.Net.Sockets;  

 

using System.Text;  

 

using System.Threading;  

 

  

 

 

Thread mythread ;  

 

Socket socket;  

 

 

// 清理所有正在使用的资源。  

 

protected override void Dispose( bool disposing )  

 

{  

 

try  

 

 {     

 

  socket.Close();//释放资源  

 

  mythread.Abort ( ) ;//中止线程  

 

 }  

 

 catch{ }  

 

  

 

if( disposing )  

 

{  

 

if (components != null)  

 

{  

 

components.Dispose();  

 

}  

 

}  

 

base.Dispose( disposing );  

 

}  

 

public static IPAddress GetServerIP()  

 

{  

 

IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());  

 

return ieh.AddressList[0];  

 

}  

 

private void BeginListen()  

 

{  

 

IPAddress ServerIp=GetServerIP();  

 

IPEndPoint iep=new IPEndPoint(ServerIp,8000);  

 

socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  

 

  

 

byte[] byteMessage=new byte[100];  

 

this.label1.Text=iep.ToString();  

 

socket.Bind(iep);  

 

// do  

 

while(true)  

 

{  

 

try  

 

{  

 

socket.Listen(5);  

 

Socket newSocket=socket.Accept();  

 

newSocket.Receive(byteMessage);  

 

  

 

string sTime = DateTime.Now.ToShortTimeString ( ) ;  

 

string msg=sTime+":"+"Message from:";  

 

msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);  

 

this.listBox1.Items.Add(msg);  

 

  

 

}  

 

catch(SocketException ex)  

 

{  

 

this.label1.Text+=ex.ToString();  

 

}  

 

}  

 

// while(byteMessage!=null);  

 

}  

 

//开始监听  

 

private void button1_Click(object sender, System.EventArgs e)  

 

{  

 

try  

 

{  

 

mythread = new Thread(new ThreadStart(BeginListen));  

 

mythread.Start();  

 

  

 

}  

 

catch(System.Exception er)  

 

{  

 

MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);  

 

}  

 

}  

 

  

 

  

 

//客户端:  

 

  

 

using System.Net;  

 

using System.Net.Sockets;  

 

using System.Text;  

 

  

 

private void button1_Click(object sender, System.EventArgs e)  

 

{  

 

BeginSend();  

 

}  

 

private void BeginSend()  

 

{  

 

string ip=this.txtip.Text;  

 

string port=this.txtport.Text;  

 

  

 

IPAddress serverIp=IPAddress.Parse(ip);  

 

int serverPort=Convert.ToInt32(port);  

 

IPEndPoint iep=new IPEndPoint(serverIp,serverPort);  

 

byte[] byteMessage;  

 

// do  

 

// {  

 

Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  

 

socket.Connect(iep);  

 

  

 

byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);  

 

socket.Send(byteMessage);  

 

socket.Shutdown(SocketShutdown.Both);  

 

socket.Close();  

 

// }  

 

// while(byteMessage!=null);  

 

}  

 

  

 

基于TCP协议的发送和接收端  

 

  

 

TCP协议的接收端  

 

  

 

using System.Net.Sockets ; //使用到TcpListen类  

 

using System.Threading ; //使用到线程  

 

using System.IO ; //使用到StreamReader类  

 

  

 

int port = 8000; //定义侦听端口号  

 

private Thread thThreadRead; //创建线程,用以侦听端口号,接收信息  

 

private TcpListener tlTcpListen; //侦听端口号  

 

private bool blistener = true; //设定标示位,判断侦听状态  

 

private NetworkStream nsStream; //创建接收的基本数据流  

 

private StreamReader srRead;  

 

private System.Windows.Forms.StatusBar statusBar1;  

 

private System.Windows.Forms.Button button1;  

 

private System.Windows.Forms.ListBox listBox1; //从网络基础数据流中读取数据  

 

private TcpClient tcClient ;  

 

  

 

private void Listen ( )  

 

{  

 

try  

 

{  

 

tlTcpListen = new TcpListener ( port ) ; //

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,