111,094
社区成员




public void Post(byte[] b)
{
TcpClient client = null;
NetworkStream ns = null;
try
{
client = new TcpClient();
client.Connect(Ip, Port); //这个方法被调用了3800次左右以后,这里报错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
client.ReceiveTimeout = 300000;
ns = client.GetStream();
//发送至服务器端
ns.Write(b, 0, b.Length);
ns.Flush();
}
catch (Exception e)
{
}
finally
{
if (ns != null)
{
ns.Close();
ns.Dispose();
}
if (client != null)
{
client.Close();
}
}
}
public class ServerClient
{
private TcpListener tcpListener = null;
//下面这个线程用来监听端口,在服务器开启以后就启动下面的线程
private Thread threadTcp = null;
threadTcp = new Thread(new ThreadStart(tcpServerProcess));
threadTcp.Start();
private void tcpServerProcess()
{
try
{
tcpListener = new TcpListener(IPAddress.Any, Port);
tcpListener.Start();
while (true)
{
try
{
TcpClient tcpClient = tcpListener.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(new WaitCallback(ReciveTcp), tcpClient);
}
catch
{
}
}
}
catch
{
}
}
private void ReciveTcp(object state)
{
TcpClient client = state as TcpClient;
NetworkStream ns = null;
try
{
client.ReceiveTimeout = 300000;
ns = client.GetStream();
byte[] bytes = new byte[client.ReceiveBufferSize];
ns.Read(bytes, 0, (int)client.ReceiveBufferSize);
//处理数据
}
catch
{
}
finally
{
if (ns != null)
{
ns.Close();
ns.Dispose();
}
if (client != null)
{
client.Close();
}
}
}
}
ThreadPool.QueueUserWorkItem(new WaitCallback(ReciveTcp), tcpClient);