2015-07-19 75 views
0

我想爲套接字c#和android中的每個請求返回響應創建。 我找到相關的套接字併發送請求,詢問我需要的數據。 發送請求後,我會收到字節,直到它發送響應。然後我停止接收。對於套接字C#中的每個請求返回響應#

我的服務器需要一次處理多個客戶端,最好是同時處理來自客戶端的多個請求。我需要在客戶端和服務器能夠在任何時候

接收郵件我寫了這個代碼:

message = Encoding.UTF8.GetString(dataRec,0,c); 
      dataRec = new byte[2048]; 
      switch(message) 
      { 
       case "list-menu": 
        sendListMenu(); 
        break; 

       case "login": 

        isLogin(message); 
        break; 
      } 

登錄方法

public void isLogin(string str){ 
      string message = ""; 
      Model_Users users; 

     dataSend=Encoding.UTF8.GetBytes("send-result"); 
     newsocket.Send(dataSend); 
     //newsocket.close(); if close not receive    
     c = newsocket.Receive(dataRec); 
     message = Encoding.UTF8.GetString(dataRec,0,c); 

      XmlSerializer xml = new XmlSerializer(typeof(Model_Users)); 

       using (TextReader reader = new StringReader(message)) 
       { 
        if (reader != null) 
        { 
         users = (Model_Users)xml.Deserialize(reader); 
         MessageBox.Show(users.username); 
         dataSend = Encoding.UTF8.GetBytes("success-login"); 
         newsocket.Send(dataSend); 
         newsocket.Close(); 
        } 

       } 
      } 

Android的代碼(客戶端):

socket = new Socket(); 
      socketAddress = new InetSocketAddress(cursor.getString(cursor.getColumnIndex("ip")), 9999); 
      socket.connect(socketAddress, 10000); 
      bufferWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
      bufferWriter.write(getrequest); 
      bufferWriter.flush(); 
      String rvdMsgTxt = ""; 
      stringBuilder = new StringBuilder(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

      while ((rvdMsgTxt = bufferedReader.readLine()).equals("success-login")) { 
       stringBuilder.append(rvdMsgTxt); 
       bufferedReader.mark(100); 
       bufferedReader.reset(); 
      } 

      bufferWriter.write(XMLConvertor.usersSerializeXML("user", "pass")); 
      bufferWriter.flush(); 

但這不起作用。

+0

究竟什麼不行? –

+0

當我發送請求得到響應,但當我發送請求並得到響應,我想得到下一個響應有一個問題得到和發送 –

+0

例如: '公共無效是登錄(字符串str){/ 0代碼 插座。發送(...); // error socket.close(); socket.Receive(...); }' –

回答

0

解決方案newsocket.Shutdown(SocketShutdown.Send);

相關問題