我是一名有用的助手,可以为您翻译文本。
我正在开发一个应用程序,其中C#服务器与Android客户端通信。服务器需要向Android tcpClient发送多个消息。要发送消息,必须在服务器上关闭tcpClient对象,否则无法发送。一旦关闭tcpClient,如何再次与客户端通信,如何跟踪并发送多个消息,或者是否有其他发送方式而不关闭它。
以下是服务器代码片段:
它可以轻松地发送一条消息,但我需要不时地发送更多消息。
我正在开发一个应用程序,其中C#服务器与Android客户端通信。服务器需要向Android tcpClient发送多个消息。要发送消息,必须在服务器上关闭tcpClient对象,否则无法发送。一旦关闭tcpClient,如何再次与客户端通信,如何跟踪并发送多个消息,或者是否有其他发送方式而不关闭它。
以下是服务器代码片段:
它可以轻松地发送一条消息,但我需要不时地发送更多消息。
//in a thread
void receivingMessages(object param)
{
try
{
var paramArray = (object[])param;
var id = paramArray[0];
var client = paramArray[1] as TcpClient;
var stream = client.GetStream();
while (true)
{
byte[] buffer = new byte[2048];
int bytesRead = stream.Read(buffer, 0, 2048);
if (bytesRead > 0)
{
StringBuilder sb = new StringBuilder();
string v = Encoding.ASCII.GetString(buffer);
int index = v.IndexOf('\0');
string trimmedXml = v.TrimEnd(new char[] { '\0' });
var root = XDocument.Parse(trimmedXml).Root;
//to get the type of xml like it is login register or message
string xmlType = root.Name.ToString();
//some checks
string result = " server messages";
SendMessage(client, result);
}
//Thread.Sleep(10);
}
}
catch (Exception)
{
}
}
public void SendMessage(TcpClient client, string message)
{
byte[] buffer = Encoding.ASCII.GetBytes(message);
NetworkStream stream = client.GetStream();
stream.Write(buffer, 0, buffer.Length);
client.Close();
}
}
}
client.NoDelay=true;
,我测试了我的代码,它可以正常工作,所以我不确定出了什么问题。 - 0_______0