2016-09-26 3 views
0

현재 서버에 String을 보내는 중이고 서버 측의 버퍼를 반복 할 때 ASCCII 문자가 나타납니다. 서버에서 16 진수로 전달하기 위해 String을 보내려면 어떻게해야합니까?서버에서 16 진수로 데이터를 수신합니까?

코드

String message; 
String result; 
String aString = "#2016011400000060.00#010104#004500##"; 
// String aString = "###"; 
BufferedReader inFromUser = new BufferedReader(new StringReader(aString)); 

Socket clientSocket = new Socket("localhost", 1000); 
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
message = inFromUser.readLine(); 
outToServer.writeBytes(message + '\n'); 
result = inFromServer.readLine(); 
System.out.println(result); 
clientSocket.close(); 
+1

당신은 당신이 보낸 무엇을 얻고있다. 네가 묻고있는 것이 불분명하다. – EJP

+0

서버에서 어떻게 읽습니까? 일반 바이트 대신 원시 소켓에서 16 진수를 사용해야하는 이유는 무엇입니까? – Andreas

답변

1

가능한 중복 :

Converting A String To Hexadecimal In Java

public String toHex(String arg) { 
    return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/))); 
} 
+0

하지만 writeHexa() 메소드가 없으므로 어떻게 소켓과 함께 보낼 수 있습니까? – TheBook

+0

@TheBook'writeBytes (toHex (message + '\ n')); ' – Andreas

+0

@TheBook 그것은 Java에 HEX 데이터 유형이 없기 때문입니다. 당신이하려는 일이 불분명합니다. – Titus