我也做了一个用tcp发送文本的,你可以借鉴一下
我的思路是:
客户端:
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();
}
} |