1,服务器端
private TcpListener listener = null;
/// <summary>
/// 初始化
/// </summary>
public void Init()
{
//开始监听
int port = 8999;
string ip = "127.0.0.1";
listener = new TcpListener(IPAddress.Parse(ip), port);
listener.Start();
WriteMsg("服务器开始监听");
Thread thread = new Thread(new ThreadStart(Listener));
thread.IsBackground = true;
thread.Start();
}
/// <summary>
/// 监听
/// </summary>
public void Listener()
{
while(true)
{
string msg = "";
Socket socket = listener.AcceptSocket();
byte[] bytes = new byte[100];
socket.Receive(bytes);
msg = Encoding.Unicode.GetString(bytes);
WriteMsg("客户端发送"+ msg.Trim());
Thread.Sleep(2000);
bytes = Encoding.Unicode.GetBytes("当前时间"+DateTime.Now);
socket.Send(bytes);
socket.Close();
}
}
/// <summary>
/// 输出信息
/// </summary>
/// <param name="msg"></param>
public void WriteMsg(string msg)
{
textBoxMsg.AppendText(msg+"\r\n");
}
2,通信dll 类库
public class ModemConn
{
//端口号
private int port;
//IP
private string ip;
//tcp
private TcpClient client = new TcpClient();
/// <summary>
/// 初始化通讯
/// </summary>
/// <returns></returns>
public bool Init(string ip,int port)
{
bool flag = false;
try
{
this.port = port;
this.ip = ip;
flag = true;
}
catch
{
}
return flag;
}
/// <summary>
/// 清理通讯
/// </summary>
public void Clean()
{
client.GetStream().Flush();
}
/// <summary>
/// 连接服务器
/// </summary>
/// <returns></returns>
public bool Connect()
{
bool flag = false;
try
{
client.Connect(IPAddress.Parse(ip), port);
flag = true;
}
catch
{
}
return flag;
}
/// <summary>
/// 检测是否已经连接
/// </summary>
/// <returns></returns>
public bool Connected()
{
return client.Connected;
}
/// <summary>
/// 断开连接
/// </summary>
public void Close()
{
client.Close();
}
/// <summary>
/// 发送数据
/// </summary>
/// <param name="buffer"></param>
/// <returns></returns>
public bool Send(string buffer)
{
bool flag = false;
try
{
Stream stream = client.GetStream();
byte[] bytes = Encoding.Unicode.GetBytes(buffer);
stream.Write(bytes, 0, bytes.Length);
flag = true;
}
catch
{
}
return flag;
}
/// <summary>
/// 接收数据
/// </summary>
/// <param name="len"></param>
/// <returns></returns>
public string Receive(int len)
{
string str = "";
try
{
Stream stream = client.GetStream();
byte[] bytes = new byte[len];
stream.Read(bytes, 0, len);
str = Encoding.Unicode.GetString(bytes);
}
catch
{
}
return str;
}
}
3,调用
/// <summary>
/// 输出信息
/// </summary>
/// <param name="msg"></param>
public void WriteMsg(string msg)
{
textBoxMsg.AppendText(msg + "\r\n");
}
//发送数据
private void button_send_Click(object sender, EventArgs e)
{
int port = 8999;
string ip = "127.0.0.1";
ModemConn conn = new ModemConn();
conn.Init(ip, port);
conn.Connect();
//发送
conn.Send(textBoxText.Text);
Thread.Sleep(2000);
//接收
string str = conn.Receive(4);
WriteMsg("接收到的数据"+str);
conn.Close();
}
- 上一篇:C#调用VC++编写的dll
- 下一篇:C# modem 发送接收数据