一个非常简单的客户端程序:
import java.io.*;
import java.net.*;
public class DailyAdviceClient
{
public void go() {
try {
Socket s = new Socket("127.0.0.1", 5000);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String advice = reader.readLine();
System.out.println("Today you should: " + advice);
reader.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
DailyAdviceClient client = new DailyAdviceClient();
client.go();
}
}
对于 DailyAdviceClient 客户端来说,它是要经过 Socket 从地址为 127.0.0.1.5000 的服务器上取入数据,所以用 socket.getInputStream() 。
一个非常简单的服务器程序:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class AdviceServer {
String[] adviceList = {"Take smaller bites", "Go for the tight jeans. No they do NOT make you look fat",
"One word: inappropriate", "Just for today, be honest. Tell your boss what you *really* think",
"You might want to rethink that haircut"};
public void go() {
try {
ServerSocket serverSocket = new ServerSocket(4200);
while(true) {
Socket socket = serverSocket.accept();
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
String advice = getAdvice();
printWriter.println(advice);
printWriter.close();
System.out.println(advice);
}
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
private String getAdvice() {
int random = (int) (Math.random() * adviceList.length);
return adviceList[random];
}
public static void main(String[] args) {
AdviceServer adviceServer = new AdviceServer();
adviceServer.go();
}
}
对于 AdviceServer 服务器应用来说,它要通过 socket 向绑定 4200 端口的客服端传出去数据,所以用 socket.getOutputStream()。
总之,看这个用 socket 的类,它是通过 socket 取入数据还是传出数据,取入数据就用 getInputStream() ,传出数据就用 getOutputStream() .