c# socket编程_c#应用

2008-02-23 05:45:08来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

//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 ) ; //以8000端口号来初始化TcpListener实例

tlTcpListen.Start ( ) ; //开始监听

statusBar1.Text = "正在监听" ;

tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通过TCP连接请求

nsStream = tcClient.GetStream ( ) ; //获取用以发送、接收数据的网络基础数据流

srRead=new StreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例

statusBar1.Text = "已连接!";

while( blistener ) //循环侦听

{

string sMessage = srRead.ReadLine();//从网络基础数据流中读取一行数据

if ( sMessage == "STOP" ) //判断是否为断开TCP连接控制码

{

tlTcpListen.Stop(); //关闭侦听

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

srRead.Close();

statusBar1.Text = "连接已关闭!" ;

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: c#和vb.net语法对比图_c#教程

下一篇: 漫谈c#编程中的多态和new关键字_c#教程