本帖最后由 郑传庆 于 2012-6-11 14:13 编辑
通过键盘向服务器端发送数据,而且客户端可以通过输入文本路径向服务器端发送文本的内容(格式如:D:\\me.txt)。服务器原样返回数据给客户端。
我的思路是:
客户端:
1、建立一个客户端Socket,传入相应的端口。
2、定义4个缓冲区,一个是接受从键盘输入的数据,一个是读取服务器端反会来的数据,一个是将客户端的数据发给服务端,
一个是用来读取文本数据的。
3、判断键盘输的字符是不是等于“end”,是就结束程序
4、关闭资源
服务器:
1、建立一个客户端ServerSocket,并监听客户端的端口。
2、定义2个缓冲区:一个是接收客户端的数据,一个是用来想客户端返回数据
3、关闭资源.
随便考下大家一个小知识点,实现换行符有多少种实现方式?对于一下细节,有什么不懂的可以回我
/**
* @param args
* @throws IOException
* @throws
*/
public static void main(String[] args) throws IOException {
Socket so = new Socket("169.254.101.68",8080);
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(so.getOutputStream()));
BufferedReader bufin = new BufferedReader(new InputStreamReader(so.getInputStream()));
String lin = null;
while((lin = buf.readLine())!=null){
if("end".equals(lin)){
break;
}
File f = new File(lin);
if(f.exists()){
BufferedReader bufs = new BufferedReader(new FileReader(f));
String l = null;
while((l = bufs.readLine())!=null){
bufw.write(l);
bufw.newLine();
bufw.flush();
String str = bufin.readLine();
System.out.println(str);
}
}else{
bufw.write(lin);
bufw.newLine();
bufw.flush();
String str = bufin.readLine();
System.out.println(str);
}
}
buf.close();
so.close();
}
/**
* 服务端
* @author zcq
*
*/
public class Servers{
public static void main(String args[]) throws IOException{
ServerSocket server = new ServerSocket(8080);
Socket s =server.accept();//接受数据
BufferedReader buf = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter buffw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".......连接成功!");
String lin =null;
while((lin=buf.readLine())!=null){
buffw.write(lin.toString());
buffw.newLine();
buffw.flush();
}
s.close();
server.close();
}
}
|