为什么启动服务端后,客户端收不到来自服务端的数据。
server 代码如下:ackage service;import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server { /**
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(20000);
while(true){
Socket s = ss.accept();
OutputStream os = s.getOutputStream();
os.write("您好,您收到了服务器的新年祝福:".getBytes());
os.close();
s.close();
}
}}
client 代码如下:
package service;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;public class client { /**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
try{
Socket socket = new Socket("172.0.0.1",20000);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = br.readLine();
System.out.println("来自服务器的数据:" + line);
br.close();
socket.close();
}catch(ConnectException e){
e.printStackTrace();
}
}
}
server 代码如下:ackage service;import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server { /**
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(20000);
while(true){
Socket s = ss.accept();
OutputStream os = s.getOutputStream();
os.write("您好,您收到了服务器的新年祝福:".getBytes());
os.close();
s.close();
}
}}
client 代码如下:
package service;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;public class client { /**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
try{
Socket socket = new Socket("172.0.0.1",20000);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = br.readLine();
System.out.println("来自服务器的数据:" + line);
br.close();
socket.close();
}catch(ConnectException e){
e.printStackTrace();
}
}
}
OutputStream os = s.getOutputStream();所以不能循环接收socket,这两句放到循环外面去,客户端只向服务端发起一次请求,只会产生一个socket,并且不能在循环里关闭socket,将s.close()去掉
outputStream.flush();
不然数据根本没写进去