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) 收藏 举报
浙公网安备 33010602011771号