简单的socket 客户端与服务器端 同一台电脑上 通信代码执行顺序
客户端
package cs;
import java.net.*;
import java.lang.*;
import java.io.*;
public class client
{
public static void main(String[] args) throws Exception
{
InetAddress net=InetAddress.getByName(null);
Socket socket=new Socket(net,8081);
try
{
InputStream in=socket.getInputStream();
BufferedReader bf=new BufferedReader(new InputStreamReader(in));
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
for(int i=1;i<=5;i++)
{
out.println("第"+i+"个随机数为"+Math.random());
String line=bf.readLine();
System.out.println(line); / / ???怎么会输不出 难道不会执行
}
out.println("quit");
}
catch(IOException e)
{
System.out.println("异常"+e.getMessage());
e.printStackTrace();
}
finally
{
System.out.println("连接结束");
socket.close();
}
}
}
服务器端
package cs;
import java.net.*;
import java.util.Random;
import java.io.*;
public class server {
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket=null;
Socket socket=null;
try
{
serverSocket=new ServerSocket(8081);
socket=serverSocket.accept();
System.out.println("连接被接受"+socket);
InputStream in=socket.getInputStream();
BufferedReader bf=new BufferedReader(new InputStreamReader(in));
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
while(true)
{
String line=bf.readLine();
if(line.endsWith("quit")) break;
System.out.println("接受客户端的数据:"+line);
out.println("我对客户端说");//写入服务端输出流,即客户端输入流,对吗
}
}
catch(IOException e)
{
System.out.println("异常"+e.getMessage());
e.printStackTrace();
}
finally
{
System.out.println("连接结束");
serverSocket.close();
socket.close();
}
}
}
我想说的 是 服务器端能 取得 客户端输出流中的数据,并输出显示相应的操作 但是
客户端却不能 从 服务器端输出流中取得数据,并输出显示数据
[解决办法]
因为你的服务端和客户端都是先 readLine(),管子两端都想读,那谁来写东西给另一端读呢?