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();
但這不起作用。
究竟什麼不行? –
當我發送請求得到響應,但當我發送請求並得到響應,我想得到下一個響應有一個問題得到和發送 –
例如: '公共無效是登錄(字符串str){/ 0代碼 插座。發送(...); // error socket.close(); socket.Receive(...); }' –