对于每个请求返回响应在套接字c#

本文关键字:套接字 响应 返回 于每个 请求 | 更新日期: 2023-09-27 18:03:20

我想在c#和android中创建每个请求返回响应。我找到相关的套接字并发送请求,请求我需要的数据。发送请求后,我接收字节,直到它发送响应。然后我停止接收。

我的服务器将需要一次处理许多客户端,最好是一次处理来自客户端的多个请求。我需要客户端和服务器都能够在任何时候接收消息

我写了下面的代码:

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 code (client):
  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();

对于每个请求返回响应在套接字c#

this SOLVED by newsocket.Shutdown(SocketShutdown.Send);