2014-12-19 4 views
0

Мне нужно начать с Client Server Communication для моего приложения. Чтобы начать работу, я хочу подключиться к локальному хосту.Client_Server два .cs в одном выпуске проекта

Вот код:

Сервер

public class serv 
{ 
    public static void Main() 
    { 
     try 
     { 
      IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //use local m/c IP address, and use the same in the client 

      /* Initializes the Listener */ 
      TcpListener myList=new TcpListener(ipAd,1025); 

      /* Start Listeneting at the specified port */  
      myList.Start(); 

      Console.WriteLine("The server is running at port 1025..."); 
      Console.WriteLine("The local End point is :" + myList.LocalEndpoint); 
      Console.WriteLine("Waiting for a connection....."); 

      Socket s=myList.AcceptSocket(); 
      Console.WriteLine("Connection accepted from "+s.RemoteEndPoint); 

      byte[] b=new byte[100]; 
      int k=s.Receive(b); 
      Console.WriteLine("Recieved..."); 
      for (int i=0;i<k;i++) 
       Console.Write(Convert.ToChar(b[i])); 

      ASCIIEncoding asen=new ASCIIEncoding(); 
      s.Send(asen.GetBytes("The string was recieved by the server.")); 
      Console.WriteLine("\nSent Acknowledgement"); 

      /* clean up */   
      s.Close(); 
      myList.Stop(); 
      Console.ReadKey(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Error..... " + e.StackTrace); 
     } 
    } 
} 

Client

public class clnt 
{ 
    public static void Main() 
    { 
     try 
     { 
      TcpClient tcpclnt = new TcpClient(); 
      Console.WriteLine("Connecting....."); 

      tcpclnt.Connect("127.0.0.1",1025); // use the ipaddress as in the server program 

      Console.WriteLine("Connected"); 
      Console.Write("Enter the string to be transmitted : "); 

      String str=Console.ReadLine(); 
      Stream stm = tcpclnt.GetStream(); 

      ASCIIEncoding asen= new ASCIIEncoding(); 
      byte[] ba=asen.GetBytes(str); 
      Console.WriteLine("Transmitting....."); 

      stm.Write(ba,0,ba.Length); 

      byte[] bb=new byte[100]; 
      int k=stm.Read(bb,0,100); 

      for (int i=0;i<k;i++) 
       Console.Write(Convert.ToChar(bb[i])); 

      tcpclnt.Close(); 
      Console.ReadKey(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Error..... " + e.StackTrace); 
     } 
    } 
} 

Проект имеет две Main() функции. Таким образом, чтобы избежать конфликта, я установил serv.cs как StartupObject, но в результате не было доступа к консольному окну клиента для отправки сообщения.

1). Как использовать/запускать такие программы на локальном хосте?

Я на самом деле нужна хорошая отправная точка для использования сокетов, но большинство приложений, доступных на сети либо совсем устарели или более advanced.I уже работал над сокетами с использованием Linux но новичок в этой среде.

2). Любой хороший пример, кроме этого?

Я уже много искал, но это моя последняя надежда! Проекты на CodeProject используют пользовательский интерфейс, и для запуска требуется простое консольное приложение.

+0

Вам необходимо создать два проекта в рамках одного решения. Один проект должен содержать сервер. Другой проект должен содержать клиента. – venerik

+0

Вы должны проверить службы WCF. Я не уверен, какая цель ваша программа будет служить, но из вашего кода кажется, что это именно то, что вам нужно, потому что это позволяет вам вызывать методы через сеть и в основном делает всю работу за вас на низком уровне (не обязательно) цена некоторой конфигурации. Я рекомендую вам ознакомиться с этим, прежде чем продолжить свой нынешний подход. – Phoenix

+0

Мое приложение - общий доступ к файлам в локальной сети @ Phoenix – Khan

ответ

1

Больше, чем ваш код не требуется. Вы начинаете оба проекта? Сначала вы должны запустить сервер, а затем клиент, чтобы клиент мог подключиться к ожидающему серверу.

+0

Существует ли какой-либо метод, позволяющий открывать оба окна консоли во время всех операций, то есть консоль, показанная после запуска сервера, по-прежнему после запуска клиента, но с новой консолью с запуском клиента? – Khan

Смежные вопросы