002 ,我自己写的一个客户端 和服务器端通信的一个数据

//服务器端:

package com.fan.a;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {


 private ServerSocket  server;    //定义一个服务对象
 private Socket serSoket;   //服务对象,创建一个套接字,这个套接字,专门来和客户端的套接字进行通讯
 private int nPort =7070;
 private int nClintCont=0;
 private PrintWriter prntWrtr =null;
 private BufferedReader bReader= null;
 private String request= null;
 
 public void startMainService(){
  try {
   server = new ServerSocket(this.nPort);
   System.out.println("等待客户端发来请求:");
   while (true) {
  
    //创建一个套接字,用来和客户端进行通讯
    //就阻塞在这里,等待客户端与Server建立连接。
    //当有客户端与本server建立连接而还没开始发起请求时,
    //客户端就会停止阻塞,程序就会接着往下走
    
    serSoket =server.accept();
    nClintCont++;
    System.out.println("第 "+nClintCont+"  :clint与server建立的链接了");
   
    
    //客户端发来的数据,被server端的  serSokect接收并且存入了内存,
    //现在我要做的事情就是从   serSokect中把数据取到,然后输出出来
    bReader = new BufferedReader( new InputStreamReader(serSoket.getInputStream()));
    request = bReader.readLine();
    System.out.println(request);
    
    
    //要返回给客户端的数据,也是通过 serSokect来完成的;
    //将返回给客户端的数据放入到输出流当中。
    //客户端的套接字自然就能得到了
    prntWrtr = new PrintWriter( new OutputStreamWriter( serSoket.getOutputStream()));
    prntWrtr.println(request +" _________");
    prntWrtr.flush();
    
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  new MyServer().startMainService();

 }

}

 

//------------------------------------客户端

package com.fan.a;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class MyClient {

 String strMsg="testRqest";
 Socket socktClient =null;
 private BufferedReader bufRdr =null;
 private PrintWriter prinWtr =null;
 
 
 public void sendMsg(){
  try {
   for (int i = 0; i < 800; i++) {
    //客户端与服务器端建立连接,为双发的通信
    //建立好基础。服务端与客户端通过套接字进行沟通,信息交换。
    //(A方:输出流输出的信息, B方会能用输入流将这部分数据读入到B方的内存中)
    //(A方:输入流中 往内存中读入的数据,是由对方B的输出流   送来的数据。  )
    
    //具体是:1、服务器端的输入流:中汇读到客户端,输出流中的内容,(即服务器会把 客户端通过输出流   输出的数据,读入到内存当中)
    //       2. 服务器端的输出流:将数据输出,
    socktClient = new Socket(InetAddress.getLocalHost(), 7070);
    
    
    

    //获得输socket的输出流
    prinWtr = new PrintWriter( socktClient.getOutputStream());
    //发送给服务器端
    prinWtr.println(strMsg+ i);
    prinWtr.flush();
    
    
    
    
    //获得客户端的输入流。
    //客户端
    bufRdr = new BufferedReader( new InputStreamReader(socktClient.getInputStream()));
    while (true) {
     if (bufRdr.ready()) {
      System.out.println("服务器端的返回值:"+bufRdr.readLine());
      break;
     }
    }
   }
   
   
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally {
   // 关闭与服务端的连接
   System.out.println("关闭与服务端的连接");
   try {
    if (bufRdr != null)
     bufRdr.close();
    if (prinWtr != null)
     prinWtr.close();
    if (socktClient != null)
     socktClient.close();
   } catch (IOException e) {
    e.printStackTrace();

  }
 }

 
 
 public static void main(String[] args) {
  new MyClient().sendMsg();
 }
 

}

posted on 2014-01-28 23:30  fantiejun0436  阅读(156)  评论(0)    收藏  举报

导航