标签:
客户端代码如下:
import java.io.*; import java.net.*; public class DailyAdviceClient { public void go(){ try { Socket s=new Socket("127.0.0.1",4242);//建立对服务器的Socket连接 //客户端从服务器读取数据 //建立连接到socket上低层输入串流的InputStreamReader //InputStreamReader是低层和高层串流间的桥梁 //s.getInputStream()从Socket取得输入串流 InputStreamReader streamReader=new InputStreamReader(s.getInputStream()); //建立BufferedReader来读取 BufferedReader reader=new BufferedReader(streamReader); String adviceString=reader.readLine(); System.out.println("Today you should: "+adviceString); //客户端向服务器发送数据 //创建不带自动行刷新的PrintWriter对象, //如果添加第二个参数true,则为自动刷新,不需要写writer.flush()这行代码 PrintWriter writer=new PrintWriter(s.getOutputStream()); writer.println("Hello,I am Client2!"); writer.flush();//刷新发送数据 System.out.println("此套接字连接的远程地址:"+s.getInetAddress().getHostAddress()); System.out.println("此套接字绑定的本地地址:"+s.getLocalAddress().getHostAddress()); System.out.println("此套接字绑定的本地端口:"+s.getLocalPort()); System.out.println("此套接字连接到的远程端口:"+s.getPort()); s.close();//关闭socket } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[]args){ DailyAdviceClient client=new DailyAdviceClient(); client.go(); } }服务器端代码如下:
import java.io.*; import java.net.*; public class DailyAdviceServer { String[] adviceList={"Take smaller bites","One word: inappropriate","" + "Just for today,be honest","Tell your boss"}; public void go(){ try { //服务器应用程序对特定端口创建出ServerSocket对象 //这会让服务器应用程序监听来自4242端口的客户端请求 ServerSocket serverSocket=new ServerSocket(4242); //服务器进入无穷循环等待客户端的请求 while(true){ System.out.println("等待客户端连接..."); //接收到用户连接请求后,此方法会返回一个socket,以便于客户端通信 //此socket的端口号和serverSocket的端口号不同 Socket sock=serverSocket.accept();//此方法会阻塞直到有连接请求到达 System.out.println("此套接字连接的地址:"+sock.getInetAddress().getHostAddress()); System.out.println("此套接字绑定的本地地址:"+sock.getLocalAddress().getHostAddress()); System.out.println("此套接字绑定的本地端口:"+sock.getLocalAddress()); System.out.println("此套接字连接到的远程端口:"+sock.getPort()); //服务器向客户端发送数据 PrintWriter writer=new PrintWriter(sock.getOutputStream()); String adviceString=getAdvice(); writer.println(adviceString); writer.flush(); System.out.println(adviceString); //服务器接收客户端发送的数据 InputStreamReader streamReader=new InputStreamReader(sock.getInputStream()); BufferedReader reader=new BufferedReader(streamReader); String adviceStringREC=reader.readLine(); System.out.println("REC: "+adviceStringREC); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getAdvice(){ int random=(int)(Math.random()*adviceList.length); return adviceList[random]; } public static void main(String []args){ DailyAdviceServer server=new DailyAdviceServer(); server.go(); } }
标签:
原文地址:http://blog.csdn.net/sxhlovehmm/article/details/44236815