TCP通讯CS模式之C#设计笔记(十八)
一、服务器端侦听到客户端连接后,可通过发送与接收函数实现数据交互、通讯,如下是客户端与服务器端实现具体流程与示例,仅供参考。
二、客户端:
1、Client启动
TcpClient tcp=new TcpClient(ip,port);
tcp.ReceiveTimeout=1000;
2、Client连接
NetworkStream stream = tcp.GetStream();
3、数据发送
if (stream.CanWrite)
{
byte[] StreamByte = new Byte[1024];
StreamByte = NGANCore.TCPListener.strToToByte(sendText);
stream.Write(StreamByte, 0, StreamByte.Length);
}
4、数据接收
if (stream.CanRead)
{
byte[] StreamByte = new Byte[1024];
stream.Read(StreamByte, 0, StreamByte.Length);
ReciveText = NGANCore.TCPListener.byteToStr(StreamByte);
}
5、关闭client
tcp.close();
三、服务器端
1、定义TCP消息类
public class TCPMessage
{
public bool Issend { get; set; }
public int Port { get; set; }
public string ReciveMessage { get; set; }
public string SendMessage { get; set; }
public TCPMessage()
{
Issend = false;
Port = 8080;
SendMessage = “”;
ReciveMessage = “”;
}
public TCPMessage(bool issend, int port, string Sendmessage, string Recivemessage)
{
Issend = issend;
Port = port;
ReciveMessage = Recivemessage;
SendMessage = Sendmessage;
}
}
2、定义TCP事件参数
public class TcpEventArgs : EventArgs
{
public string TcpMsg { get; set; }
public TcpEventArgs(string msg)
{
TcpMsg = msg;
}
}
3、服务端启动
TcpListener server = new TcpListener(TcpCmd.Port);
server.Start();
4、侦听
TcpClient tcp = server.AcceptTcpClient();
NetworkStream stream = tcp.GetStream();
5、发送
if (stream.CanWrite)
{
if (TcpCmd.SendMessage.Trim() != “”)
{
byte[] StreamByte = new byte[2048];
StreamByte = strToToByte(TcpCmd.SendMessage);
stream.Write(StreamByte, 0, StreamByte.Length);
}
}
6、接收
if (stream.CanRead)
{
byte[] StreamByte = new byte[2048];
if (stream.Read(StreamByte, 0, StreamByte.Length)>0)
{
string strRecive = byteToStr(StreamByte);
AddDataToList(new TCPMessage(false, TcpCmd.Port, TcpCmd.SendMessage, strRecive));//添加到接收消息队列中
return true;
}
else
{
return false;
}
}
7、关闭
stream.Close();
tcp.Close();
server.Stop();