
java socket传输过程中 字符串加回车换行的问题
客户端publicclassConnectTest{privatestaticintport=30000;publicstaticvoidmain(String[]arg...
客户端
public class ConnectTest {
private static int port=30000;
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException{
Socket s=new Socket(ip,port);
System.out.println("Connect success");
OutputStream os=s.getOutputStream();
os.write("key\n".getBytes("utf-8"));
os.close();
s.close();
}
}
服务器端
public class ServerThread extends Thread {
Socket threadS;
BufferedReader br;
public ServerThread(Socket s) throws IOException{
threadS=s;
br=new BufferedReader(new InputStreamReader(threadS.getInputStream(),"utf-8"));
}
public void run(){
String content;
while((content=getClientContent())!=null){
//do some process
if(content=="key"){ //注意这边了
System.out.println("success"+content);
}
else{
System.out.print("failed"+content);
}
}
}
public String getClientContent(){
try{
return br.readLine();
}
catch(IOException e){//if the connect is unusually ,remove the socket in the list
PCServer.removeSocket(threadS);
}
return null;
}
}
很简单的一个cs结构的例子,但为什么客户端的"key\n" readline()之后不久该是”key“吗? 但实际输出的是failedkey,即使不相等,我编码都用了utf-8了,也尝试了\r\n什么的。。,请问下是为什么? windows环境 展开
public class ConnectTest {
private static int port=30000;
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException{
Socket s=new Socket(ip,port);
System.out.println("Connect success");
OutputStream os=s.getOutputStream();
os.write("key\n".getBytes("utf-8"));
os.close();
s.close();
}
}
服务器端
public class ServerThread extends Thread {
Socket threadS;
BufferedReader br;
public ServerThread(Socket s) throws IOException{
threadS=s;
br=new BufferedReader(new InputStreamReader(threadS.getInputStream(),"utf-8"));
}
public void run(){
String content;
while((content=getClientContent())!=null){
//do some process
if(content=="key"){ //注意这边了
System.out.println("success"+content);
}
else{
System.out.print("failed"+content);
}
}
}
public String getClientContent(){
try{
return br.readLine();
}
catch(IOException e){//if the connect is unusually ,remove the socket in the list
PCServer.removeSocket(threadS);
}
return null;
}
}
很简单的一个cs结构的例子,但为什么客户端的"key\n" readline()之后不久该是”key“吗? 但实际输出的是failedkey,即使不相等,我编码都用了utf-8了,也尝试了\r\n什么的。。,请问下是为什么? windows环境 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询