今天复习到socket通信,在写了简单的通信代码,服务端与客户端始终无法实现数据传输
服务器端:
/*
* 服务端
*/
public class server {
public static void main(String args[]) throws IOException{
//定义服务端
ServerSocket server=new ServerSocket(7777);
//接入客户端
Socket currentCilent=server.accept();
//读数据 接受请求
InputStreamReader request=new InputStreamReader(currentCilent.getInputStream(),"UTF-8");
BufferedReader reader=new BufferedReader(request);
String s=reader.readLine();
s=s+"_word";
//发送给客户端 写数据 返回响应
PrintWriter response=new PrintWriter(new OutputStreamWriter(currentCilent.getOutputStream(),"UTF-8"));
**response.print(s);**
response.flush();
//关闭客户端请求
currentCilent.close();
}
}
客户端:
public class client {
public static void main(String args[]) throws IOException{
//建立和服务器的连接
Socket client =new Socket("localhost",7777);
//写数据 发送请求...
PrintWriter request=new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));
**request.print("hello");**
request.flush();
//接收返回的数据
//InputStreamReader is=new InputStreamReader(client.getInputStream(),"utf-8");
BufferedReader response=new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));
String s= response.readLine();
//处理数据
System.out.print("客户端接收到的回应:"+s);
client.close();
}
}
报错 信息:
寻寻觅觅仔细检查发现:
request.print(“hello”);//问题出在这句话上 ,导致无法连接
改为 request.println(“hello”);bug解决。
那么 ,
print()和println()区别是什么呢? 因为没有报错,编译可以通过。
查找jdk手册:
printWriter类发现:
print(String s)
打印字符串。
println(String x)
打印 String,然后终止该行。
所以,之前写print()并没有终止所以导致程序出现问题??
有待商榷,希望高手可以指点迷津~