以下是简单的socket client代码,真正用在socket 通讯上还会有些问题,只做学习和参考.
/***************************************
* 对象名称: SocketObj
* 功能说明:
远程发送与接收
* 试用示例:
* using EC; //引用空间名
* string
url = "192.168.1.10"; // URL也可以是(DNS)这种形式
* int port = 339; //端口
* string SendStr = "domainname\n";
//组织要发送的字符串
* SendStr += "check\n";
* SendStr +=
"entityname:domains\n";
* SendStr += "domainname:" +
this.TextBox1.Text + "\n";
* SendStr += ".\n";
*
EBSocketObj o = new SocketObj(); //创建新对象
* o.Connection(url,
port); //打开远程端口
*
o.Send(SendStr); //发送数据
*
Response.Write(o.Recev()); //接收数据
* o.Dispose(); //销毁对象
**********************************************/
using System;
using System.IO;
using System.Net;
using
System.Net.Sockets;
using System.Text;
namespace EC
{
/// <summary>
/// Socket 远程发送与接收
/// </summary>
public class SocketObj
{
private
NetworkStream ns;
private bool _alreadyDispose = false;
#region 构造与释构
public EBSocketObj()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public EBSocketObj(string url, int port)
{
Connection(url, port);
}
~EBSocketObj()
{
Dispose();
}
protected virtual void Dispose(bool isDisposing)
{
if
(_alreadyDispose) return;
if (isDisposing)
{
if (ns != null)
{
try
{
ns.Close();
}
catch (Exception E)
{ }
ns.Dispose();
}
}
_alreadyDispose = true;
}
#endregion
#region IDisposable 成员
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
#endregion
#region 打开端口
/// <summary>
///
打开端口
/// </summary>
/// <param
name="url">URL或者:IP地址</param>
/// <param
name="port"></param>
///
<returns></returns>
public virtual void Connection(string
url, int port)
{
if (url == null || url == "")
return;
if (port < 0) return;
if
(port.ToString()==string.Empty) port = 80;
TcpClient tcp =
null;
try
{
tcp = new
TcpClient(url, port);
}
catch (Exception
E)
{
throw new Exception("Can't connection:" +
url);
}
this.ns = tcp.GetStream();
}
#endregion
#region 发送Socket
/// <summary>
///
发送Socket
/// </summary>
/// <param
name="ns"></param>
/// <param
name="message"></param>
///
<returns></returns>
public virtual bool Send(string
message)
{
if (ns == null) return
false;
if (message == null || message == "") return
false;
byte[] buf =
Encoding.ASCII.GetBytes(message);
try
{
ns.Write(buf, 0, buf.Length);
}
catch (Exception E)
{
throw
new Exception("Send Date Fail!");
}
return
true;
}
#endregion
#region 收取信息
/// <summary>
///
收取信息
/// </summary>
/// <param
name="ns"></param>
///
<returns></returns>
public string Recev()
{
if (ns == null) return null;
byte[] buf = new
byte[4096];
int length = 0;
try
{
length = ns.Read(buf, 0, buf.Length);//这里也可以是一个对象,把byte转成一个对象
}
catch (Exception E)
{
throw
new Exception("Receive data fail!");
}
return
Encoding.ASCII.GetString(buf, 0, length);
}
#endregion
}
}