Hi, I'm trying to build a media server where 4 clients can connect to it simulateously. Each client can choose a video channel and control its playback. However, the following code does not seems to connect/work. The error is " cannot convert from 'WindowsFormsApplication1.Client' to 'System.Net.Sockets.Socket' ".
Other than that, I cant get to use the BinaryWriter in my code.
Code:namespace WindowsFormsApplication1 { public partial class Form1 : Form { private volatile int channelNo; private TcpListener server; private List<Client> client = new List<Client>(); private Thread serverThread; private Thread listenThread; private NetworkStream buffer; private ManualResetEvent stopThread = new ManualResetEvent(false); private BinaryWriter writer; private NetworkStream socketStream; private List<AxWMPLib.AxWindowsMediaPlayer> mediaPlayers = new List<AxWMPLib.AxWindowsMediaPlayer>(); public Form1() { try { InitializeComponent(); mediaPlayers.Add(axWindowsMediaPlayer1); mediaPlayers.Add(axWindowsMediaPlayer2); mediaPlayers.Add(axWindowsMediaPlayer3); mediaPlayers.Add(axWindowsMediaPlayer4); server = new TcpListener(IPAddress.Parse("127.0.0.1"), 3811); server.Start(); listenThread = new Thread(new ParameterizedThreadStart(listenServer)); listenThread.Start(); } catch (Exception error) { MessageBox.Show(error.Message); } } private ManualResetEvent quitEvent = new ManualResetEvent(false); public void listenServer(object obj) { while (quitEvent.WaitOne(1000, false)) { try { if (server.Server.Available > 0) { Client localClient = new Client(server.AcceptSocket()); client.Add(localClient); NetworkStream buffer = localClient.GetStream(); // get NetworkStream associated with Tcpclient NetworkStream serverSockStream = new NetworkStream(localClient); socketStream = new NetworkStream(localClient); writer = new BinaryWriter(socketStream); serverThread = new Thread(new ParameterizedThreadStart(startServer)); serverThread.Start(localClient); } } catch (Exception err) { MessageBox.Show(err.Message); } } } private void startServer(object obj) { try { Client client = obj as Client; Debug.Assert(client != null); string[] cueNo = new string[5]; int countNo = 0; int videoPlayingNo = 0; bool isEjectClick = true; while (!stopThread.WaitOne(0, true)) { int length = client.ClientSock.Available; if (length > 0) { byte[] receivedCmd = new byte[length]; client.ClientSock.Receive(receivedCmd); string cmdReceived = Encoding.ASCII.GetString(receivedCmd); if (cmdReceived == "CRAT00042011\n")// to connect to channel 1 //imagine you have the crat command here client.Channel = 0; if (cmdReceived == "CRAT00042012\n") client.Channel = 1; if (cmdReceived == "CRAT00042013\n") client.Channel = 2; if (cmdReceived == "CRAT00042014\n") client.Channel = 3; } } } catch (Exception error) { MessageBox.Show(error.Message); } } protected override void OnFormClosed(FormClosedEventArgs e) { base.OnFormClosed(e); quitEvent.Set(); client = null; server.Stop(); writer.Close(); stopThread.Set(); } } }Can anyone help? Any help will be much appreciated. Thanks.Code:{ public class Client { private Socket clientSock; public Socket ClientSock { get { return clientSock; } } /// <summary> /// make sure channel is between 0 and 3 /// </summary> private int channel=0; public int Channel { get { return channel; } set { channel = value; Debug.Assert(channel >= 0 && channel <= 3, "Channel out of range"); } } public Client(Socket sock) { clientSock = sock; } } }



LinkBack URL
About LinkBacks


