为什么客户端发的文字服务端收不到?哪里错了?求指点。。。
下面是客户端
public class TCPClient {
public static void main(String[] args){
try{
Socket s=new Socket("127.0.0.1",6668);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brk=new BufferedReader(new InputStreamReader(System.in));
//BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String str="";
do{
str=brk.readLine();
System.out.println("客户:"+str);
bw.write(str);
bw.flush();
}while(!str.equals("bye"));
//br.close();
bw.close();
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
下面是服务端
public class TestTCPServer {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(6668);
Socket s = ss.accept();
System.out.println("有一个客户端连接上来了!!~·");
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
//BufferedReader brk=new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String str="";
do{
str=br.readLine();
System.out.println("客户:"+str);
}while(!str.equals("bye"));
br.close();
//bw.close();
s.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
服务端在str=br.readLine()处阻塞;因为客户端只发送了输入的文字(不带换行符),没发送换行符,readline方法认为一行还没结束,会一直等换行符。应该改客户端的发送部分:
bw.write(str);
bw.newLine();//发送换行
bw.flush();
------解决方案--------------------
=========================================
慢慢来吧,socket以后你是否用到也不好说,如果想学可以自己写socket服务器,
如果想稳定的用在项目,可以看一下apache mina框架。开源的。