您的位置:首页 > 其它

Socket通信基础

2006-08-21 16:44 211 查看
Socket通信传递数据
服务端:
[align=left]using System.Net;[/align]
[align=left]using System.Net.Sockets;[/align]
[align=left]using System.Text;[/align]
using System.Threading;
[align=left] [/align]
[align=left] Thread mythread ;[/align]
[align=left] Socket socket;[/align]
[align=left]// 清理所有正在使用的资源。[/align]
[align=left] protected override void Dispose( bool disposing )[/align]
[align=left] {[/align]
[align=left] try [/align]
[align=left]  {    [/align]
[align=left]   socket.Close();//释放资源 [/align]
[align=left]   mythread.Abort ( ) ;//中止线程 [/align]
[align=left]  } [/align]
[align=left]  catch{ } [/align]
[align=left] [/align]
[align=left] if( disposing )[/align]
[align=left] {[/align]
[align=left] if (components != null) [/align]
[align=left] {[/align]
[align=left] components.Dispose();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] base.Dispose( disposing );[/align]
}
[align=left] public static IPAddress GetServerIP()[/align]
[align=left] {[/align]
[align=left] IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());[/align]
[align=left] return ieh.AddressList[0];[/align]
[align=left] }[/align]
[align=left] private void BeginListen()[/align]
[align=left] {[/align]
[align=left] IPAddress ServerIp=GetServerIP();[/align]
[align=left] IPEndPoint iep=new IPEndPoint(ServerIp,8000);[/align]
[align=left] socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);[/align]
[align=left] [/align]
[align=left] byte[] byteMessage=new byte[100]; [/align]
[align=left] this.label1.Text=iep.ToString();[/align]
[align=left] socket.Bind(iep); [/align]
[align=left]// do[/align]
[align=left] while(true)[/align]
[align=left] {[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] socket.Listen(5);[/align]
[align=left] Socket newSocket=socket.Accept();[/align]
[align=left] newSocket.Receive(byteMessage);[/align]
[align=left] [/align]
[align=left] string sTime = DateTime.Now.ToShortTimeString ( ) ;[/align]
[align=left] string msg=sTime+":"+"Message from:";[/align]
[align=left] msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);[/align]
[align=left] this.listBox1.Items.Add(msg);[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] catch(SocketException ex)[/align]
[align=left] {[/align]
[align=left] this.label1.Text+=ex.ToString();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]// while(byteMessage!=null);[/align]
[align=left] }[/align]
[align=left] //开始监听[/align]
[align=left] private void button1_Click(object sender, System.EventArgs e)[/align]
[align=left] {[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] mythread = new Thread(new ThreadStart(BeginListen));[/align]
[align=left] mythread.Start();[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] catch(System.Exception er)[/align]
[align=left] {[/align]
[align=left] MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);[/align]
[align=left] } [/align]
}

客户端:

[align=left]using System.Net;[/align]
[align=left]using System.Net.Sockets;[/align]
using System.Text;

[align=left] private void button1_Click(object sender, System.EventArgs e)[/align]
[align=left] {[/align]
[align=left] BeginSend(); [/align]
[align=left] }[/align]
[align=left] private void BeginSend()[/align]
[align=left] { [/align]
[align=left] string ip=this.txtip.Text;[/align]
[align=left] string port=this.txtport.Text;[/align]
[align=left] [/align]
[align=left] IPAddress serverIp=IPAddress.Parse(ip); [/align]
[align=left] int serverPort=Convert.ToInt32(port);[/align]
[align=left] IPEndPoint iep=new IPEndPoint(serverIp,serverPort); [/align]
[align=left] byte[] byteMessage; [/align]
[align=left]// do[/align]
[align=left]// {[/align]
[align=left] Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);[/align]
[align=left] socket.Connect(iep);[/align]
[align=left] [/align]
[align=left] byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);[/align]
[align=left] socket.Send(byteMessage);[/align]
[align=left] socket.Shutdown(SocketShutdown.Both);[/align]
[align=left] socket.Close();[/align]
[align=left]// }[/align]
[align=left]// while(byteMessage!=null);[/align]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: