[收藏]DotNET(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 ) ; // 以 8000 端口号来初始化 TcpListener 实例

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

statusBar1.Text = " 正在监听 ..." ;

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

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

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

statusBar1.Text = " 已经连接! ";

while ( blistener ) // 循环侦听

<SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-

Published At
Categories with Web编程
Tagged with
comments powered by Disqus