2014-03-05 44 views
0

我是新來的套接字的東西,我只是想連接到服務器,並獲得響應。這裏是我的代碼:如何在嘗試連接服務器時管理響應?

IPEndPoint ipe = new IPEndPoint(address, port); 
Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
tempSocket.Connect(ipe); 

所以,當我這樣做的服務器(DELPHI)是這樣做的:

Socket.SendText(#2+'D'+'ERRO GMT! Terminal '+Socket.RemoteAddress+' nao cadastrado.'+#3); 

但我真的不知道熱接收這樣做窩後的反應。連接。 有沒有可能得到那個?

+0

我不知道我是否會用插座但可能接受你應該使用BeginReceive:http://msdn.microsoft.com/en-us/library/ms145132(v=vs.110).aspx – SKall

+0

你會用什麼? TCPClient或類似的東西?我對sugestions很開放,我只需要嘗試連接並以某種方式獲得該響應 – user3120770

回答

0

這是使用TcpListener server + TcpClient的快速示例。異步的東西在異步函數上看起來好得多(在控制檯上並不多)。 client.GetStream()。ReadAsync正在讀取服務器響應。

public static void Main(string[] args) 
    { 
     // sample listener 
     var listener = new TcpListener(IPAddress.Any, 1334); 
     listener.Start(); 
     listener.BeginAcceptTcpClient ((ar) => 
      { 
       var l = ar.AsyncState as TcpListener; 

       if (l != null) 
       { 
        var bytes = Encoding.UTF8.GetBytes ("Hello World!"); 
        l.EndAcceptTcpClient (ar).GetStream().Write (bytes, 0, bytes.Length); 
       } 
      }, 
      listener); 

     // async client 
     var client = new TcpClient(); 

     var connection = client.ConnectAsync("localhost", 1334); 

     connection.Wait(); 

     if (!connection.IsFaulted) 
     { 
      var buffer = new byte[1024]; 
      var res = client.GetStream().ReadAsync (buffer, 0, buffer.Length); 
      res.Wait(); 

      if (!res.IsFaulted) 
      { 
       Console.WriteLine (Encoding.UTF8.GetString (buffer)); 
      } 
     } 
    } 
相關問題