c#中tcp协议服务器同时接收客户端的数据
生活随笔
收集整理的這篇文章主要介紹了
c#中tcp协议服务器同时接收客户端的数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//服務器為每一個連接客戶端產生一個線程,這樣接受多個連接:
private?TcpListener?tcpListener;
private?Thread?listenThread;
public?Server()
{
????this.tcpListener?=?new?TcpListener(IPAddress.Any,?3000);
????this.listenThread?=?new?Thread(new?ThreadStart(ListenForClients));
????this.listenThread.Start();
}
private?void?ListenForClients()
{
????this.tcpListener.Start();
????while?(true)
????{
????????//blocks?until?a?client?has?connected?to?the?server
????????TcpClient?client?=?this.tcpListener.AcceptTcpClient();
????????//create?a?thread?to?handle?communication
????????//with?connected?client
????????Thread?clientThread?=?new?Thread(new?ParameterizedThreadStart(HandleClientComm));
????????clientThread.Start(client);
????}
}
private?void?HandleClientComm(object?client)
{
????TcpClient?tcpClient?=?(TcpClient)client;
????NetworkStream?clientStream?=?tcpClient.GetStream();
????byte[]?message?=?new?byte[4096];
????int?bytesRead;
????while?(true)
????{
????????bytesRead?=?0;
????????try
????????{
????????????//blocks?until?a?client?sends?a?message
????????????bytesRead?=?clientStream.Read(message,?0,?4096);
????????}
????????catch
????????{
????????????//a?socket?error?has?occured
????????????break;
????????}
????????if?(bytesRead?==?0)
????????{
????????????//the?client?has?disconnected?from?the?server
????????????break;
????????}
????????//message?has?successfully?been?received
????????ASCIIEncoding?encoder?=?new?ASCIIEncoding();
????????System.Diagnostics.Debug.WriteLine(encoder.GetString(message,?0,?bytesRead));
????}
????tcpClient.Close();
} 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
private?TcpListener?tcpListener;
private?Thread?listenThread;
public?Server()
{
????this.tcpListener?=?new?TcpListener(IPAddress.Any,?3000);
????this.listenThread?=?new?Thread(new?ThreadStart(ListenForClients));
????this.listenThread.Start();
}
private?void?ListenForClients()
{
????this.tcpListener.Start();
????while?(true)
????{
????????//blocks?until?a?client?has?connected?to?the?server
????????TcpClient?client?=?this.tcpListener.AcceptTcpClient();
????????//create?a?thread?to?handle?communication
????????//with?connected?client
????????Thread?clientThread?=?new?Thread(new?ParameterizedThreadStart(HandleClientComm));
????????clientThread.Start(client);
????}
}
private?void?HandleClientComm(object?client)
{
????TcpClient?tcpClient?=?(TcpClient)client;
????NetworkStream?clientStream?=?tcpClient.GetStream();
????byte[]?message?=?new?byte[4096];
????int?bytesRead;
????while?(true)
????{
????????bytesRead?=?0;
????????try
????????{
????????????//blocks?until?a?client?sends?a?message
????????????bytesRead?=?clientStream.Read(message,?0,?4096);
????????}
????????catch
????????{
????????????//a?socket?error?has?occured
????????????break;
????????}
????????if?(bytesRead?==?0)
????????{
????????????//the?client?has?disconnected?from?the?server
????????????break;
????????}
????????//message?has?successfully?been?received
????????ASCIIEncoding?encoder?=?new?ASCIIEncoding();
????????System.Diagnostics.Debug.WriteLine(encoder.GetString(message,?0,?bytesRead));
????}
????tcpClient.Close();
} 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的c#中tcp协议服务器同时接收客户端的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好记性不如烂笔头,记录几个常用的Linu
- 下一篇: ffmpeg 0.6.3 代码, 经过我