【发布时间】:2018-04-12 13:10:29
【问题描述】:
我有 2 个应用程序:Xamarin.Android 通过 Wifi 从SeekBar 发送值的客户端应用程序和实时接收此值的WinForms 服务器。一切正常,但每次传输约 40 秒的数据后,Android 应用程序都会抛出 System.Net.Sockets.SocketException 并显示“打开的文件太多”的消息。
我的接收数据的服务器代码:
public void StartReceiving()
{
IPAddress localAdd = IPAddress.Parse(SERVER_IP);
TcpListener listener = new TcpListener(localAdd, PORT_NO);
listener.Start();
while (true)
{
Socket client = listener.AcceptSocket();
client.NoDelay = true;
var childSocketThread = new Thread( () =>
{
byte[] datareceived = new byte[1];
int size = client.Receive(datareceived);
for (int i = 0; i < size; i++)
{
Console.WriteLine(datareceived[0].ToString());
}
Console.WriteLine();
//client.Close();
});
childSocketThread.Start();
}
}
从 SeekBar 发送值的客户端代码:
private void Seek1_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e)
{
TcpClient client = new TcpClient(SERVER_IP, PORT_NO);
NetworkStream nwStream = client.GetStream();
byte[] bytesToSend = new byte[1];
bytesToSend[0] = Convert.ToByte(e.Progress);
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
}
所以我的问题是,是什么导致了这个问题,我该如何解决?
【问题讨论】:
标签: c# winforms xamarin.android