启动侦听
这是一个线程方法:
try
{
//创建TcpListener对象实例
serverListener = new TcpListener( Dns.GetHostByName( Dns.GetHostName() ).AddressList[ 0 ], MyPort );
serverListener.Start(); //启动侦听
}
catch(Exception ex)
{
MessageBox.Show("不能启动侦听服务!"+ex.Message,"提示:",
MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
接收信息
同样是一个线程方法:
if( serverListener.Pending() == true )
{
// 1. 取得客户端Tcp连接对象
try
{
tpc = serverListener.AcceptTcpClient( );//侦听到连接后创建客户端连接对象
netStream = tpc.GetStream();//得到网络流 : NetworkSream
sr = new StreamReader( netStream );//流读写器: StreamReader
}
catch( Exception re )
{
MessageBox.Show("接受连接失败!/n"+re.Message+"/n请重新”启动“系统。","提示:",MessageBoxButtons.OK,MessageBoxIcon.Warning);
sr.Close();
netStream.Close();
tpc.Close();
return;
}
// 2. 解析接收到的信息
try
{
string received = Empty;
string receivedStr = Empty;
//读流中的一行
while( ( received = sr.ReadLine( ) ) != null )
{
receivedStr += received;
}
if( receivedStr != Empty )//不是空消息
{
// 处理接收到的信息
}
}
catch( Exception re )
{
MessageBox.Show("读取消息有错误!/n"+re.Message,"提示:",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
finally
{
//其他处理
}
}
发送信息
// 1. 连接目标机
TcpClient tempTpc;
try
{
tempTpc = new TcpClient( HostName, Port ); //创建连接
}
catch( Exception le )
{
return "失败" + le.Message;
}
// 2. 给目标机发送消息
try
{
netStream = tempTpc.GetStream();//得到网络流
sw = new StreamWriter( netStream );//创建TextWriter,向流中写字符
sw.Write( Content );//写入流
sw.Close( ); //关闭流写入器
netStream.Close( );//关闭网络流
tempTpc.Close( );//关闭客户端连接,释放资源
}
catch( Exception ex )
{
return "发送失败! (" + ex.Message + ")";
}
// 3. 返回发送成功标志
return "成功";
判断是否可以连接某个IP
TcpClient tempTpc = new TcpClient( );
try
{
tempTpc.ReceiveTimeout = 1000;
tempTpc.Connect( HostName, Port );
tempTpc.Close();
return true;
}
catch
{
return false;
}