服務器發(fā)送一條數(shù)據(jù)如:
Java代碼
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
out.println("沒有查到該數(shù)據(jù)。");//向客戶端發(fā)送
out.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
out.println("沒有查到該數(shù)據(jù)。");//向客戶端發(fā)送
out.flush();
然后客戶端接收:
Java代碼
public BufferedReader recieve(){
//從服務端程序接收數(shù)據(jù)
InputStreamReader isr=null;
BufferedReader br=null;
try {
isr = new InputStreamReader(server.getInputStream());//這里需要GBK
br = new BufferedReader(isr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return br;
}
///
BufferedReader br=recieve();
while((message = br.readLine()) != null){
messages+=message;
}
System.out.println("messages="+messages);
public BufferedReader recieve(){
//從服務端程序接收數(shù)據(jù)
InputStreamReader isr=null;
BufferedReader br=null;
try {
isr = new InputStreamReader(server.getInputStream());//這里需要GBK
br = new BufferedReader(isr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return br;
}
///
BufferedReader br=recieve();
while((message = br.readLine()) != null){
messages+=message;
}
System.out.println("messages="+messages);
你會發(fā)現(xiàn)這樣寫會是亂碼;
應該寫成isr = new InputStreamReader(server.getInputStream(),"GBK");
這樣就正常顯示了。
在服務端默認的編碼情況下,JAVA的SOCKET接收需要GBK編碼,而C#的接收需要UTF-8編碼