![](/img/trans.png)
[英]Java RMI threads on client-side are executing sequentially or concurrently when calling the same remote object?
[英]When JSON object parse via Java Socket as a string additional symbols are added to the beginning when reading from client-side
我嘗試使用PrintWriter
通過 java TCP 套接字從服務器端(在 java 中)發送 JSON 對象。
問題是當我從客戶端(在 Java 中)將它作為字符串讀取時,它給了我額外的偏移量字符。
�{"data":[{"route":"koswatta","routeNumber":"163","IdNo":"1"},{"route":"Battaramulla","routeNumber":"163","IdNo":"2"}]}
上面我提到了我在客戶端閱讀時的反應。 “
” 標記是附加的。 在客戶端,我修剪了字符串值。在修剪之前,我也在“
”之前得到了“”符號。
實際上上面提到的“”符號在引號內有正方形。(我不知道如何輸入堆棧溢出問題)
我怎樣才能刪除它?
我是 Java 的初學者。我的英語也很抱歉。
服務器代碼:
public class serverTCP {
public serverTCP() throws IOException, ClassNotFoundException {
Socket socket;
System.out.println(RadiusSearchAlgo.getObj().toString());
//Get size of object, convert to bytes to use as header
String j1String = RadiusSearchAlgo.getObj().toString();
long j1Size = j1String.length();
byte[] j1AsBytes = new
BigInteger(Long.toString(j1Size)).toByteArray();
//Set up socket
int port = 45000;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Server Started and listening to the port 25000");
while(true)
{
socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String number = br.readLine();
String number2 = br.readLine();
System.out.println("num1 : "+number);
System.out.println("num2 : "+number2);
System.out.println("Message received from client is "+number);
//Multiplying the number by 2 and forming the return message
String returnMessage;
try
{
int numberInIntFormat = Integer.parseInt(number);
int returnValue = numberInIntFormat*2;
returnMessage = String.valueOf(returnValue) + "\n";
}
catch(NumberFormatException e)
{
//Input was not a number. Sending proper message back to client.
returnMessage = "Please send a proper number\n";
}
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnMessage);
System.out.println("Message sent to the client is "+returnMessage);
bw.flush();
//sending JSON Object
DataOutputStream dout = new DataOutputStream(out);
DataInputStream din = new DataInputStream(in);
PrintWriter pout = new PrintWriter(out, true);
dout.write(j1AsBytes);
pout.println(j1String+"\n");
socket.close();
}
}
}
客戶代碼:
public class Client_TCP {
public static void main(String[] args) throws IOException, JSONException {
String ip = "localhost";
int port = 45000; // 0-1023 :Reserved , 1024 to 65535 Can use. (this is server port number) one server can have multiple process/applications.so go to a specific process we use ports numbers.
Socket socket = new Socket(ip,port);
String str = "7";
String string = "8";
OutputStreamWriter outputStreamWriter= new OutputStreamWriter(socket.getOutputStream());
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
OutputStreamWriter(socket.getOutputStream());
printWriter.println(str);
printWriter.println(string);
outputStreamWriter.flush();
//Get the return message from the server
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String message = br.readLine();
System.out.println("Message received from the server : " +message+"\n");
String ms2 = br.readLine().trim();
System.out.println(ms2);
outputStreamWriter.close();
}
}
“垃圾”由j1AsBytes
的字節內容j1AsBytes
,您正在發送,但不單獨讀取。 如果您不需要它,請不要發送它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.