TCP双向传输
2015-06-19 12:43
639 查看
TCP双向传输:
客户端通过键盘向服务端发送字符串,服务端接收到客户端发来的字符串进行翻转后,发送给客户端。
/*
思路:
1.客户端:源-键盘录入 目的-网络输出流 操作字符串-选择字符流
2.服务器端:源-输入流 目的-输出流
3.为提高效率,加入缓冲
服务器端步骤:
1.建立服务器socket服务
2.获取客户端对象
3.读取客户端发送过来的数据
4.将读取到的字符串反转
5.获取Socket流中的输出流,将反转后的字符串写到该输出流
6.关闭客户端资源,关闭服务器端资源
*/
//服务器端
/*
客户端步骤:
1.建立socket服务
2.获取键盘录入
3.将数据发送给服务器。
4.获取服务端返回的数据,并打印
5.关闭客户端资源
*/
//客户端
客户端通过键盘向服务端发送字符串,服务端接收到客户端发来的字符串进行翻转后,发送给客户端。
/*
思路:
1.客户端:源-键盘录入 目的-网络输出流 操作字符串-选择字符流
2.服务器端:源-输入流 目的-输出流
3.为提高效率,加入缓冲
服务器端步骤:
1.建立服务器socket服务
2.获取客户端对象
3.读取客户端发送过来的数据
4.将读取到的字符串反转
5.获取Socket流中的输出流,将反转后的字符串写到该输出流
6.关闭客户端资源,关闭服务器端资源
*/
//服务器端
class TcpServer { public static void main(String[] args)throws Exception { //建立服务器端Socket服务,并监听一个端口 ServerSocket ss=new ServerSocket(8089); //通过accept方法获取连接过来的客户端对象 Socket s1=ss.accept(); //获取IP,打印IP连接上的标志 String ip=s1.getInetAddress().getHostAddress(); System.out.println(ip+"......connected"); //读取socket读取流中的数据 BufferedReader server_bufIn= new BufferedReader(new InputStreamReader(s1.getInputStream())); //将数据写入socket输出流,并发送给客户端 BufferedWriter server_bufOut= new BufferedWriter(new OutputStreamWriter(s1.getOutputStream())); //定义读取的一行数据 String str2=null; //当读取的数据不为空时 while((str2=server_bufIn.readLine())!=null) { //以字符串形式打印读取到的数据 System.out.println("客户端:"+str2); //将反转后的字符串写到该输出流 server_bufOut.write(reverse(str2)); //换行。因为字符存储在缓冲区,所以要刷新 server_bufOut.newLine(); server_bufOut.flush(); } s1.close(); ss.close(); } //字符串反转 public static String reverse(String str) { if(str !=null && str !="") { StringBuffer buf=new StringBuffer(str); buf.reverse(); return buf.toString(); } else { return ""; } } }
/*
客户端步骤:
1.建立socket服务
2.获取键盘录入
3.将数据发送给服务器。
4.获取服务端返回的数据,并打印
5.关闭客户端资源
*/
//客户端
class TcpClient { public static void main(String[] args)throws Exception { //建立客户端Socket服务 Socket s=new Socket("127.0.0.1",8089); //定义读取键盘数据的流对象 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); //定义目的:将数据写入到socket输出流,发给服务端 BufferedWriter client_bufOut= new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //定义一个socket读取流,读取服务端返回的反转字符串 BufferedReader client_bufIn= new BufferedReader(new InputStreamReader(s.getInputStream())); String strkey=null; //读取键盘录入数据 while((strkey=bufr.readLine())!=null) { if("over".equals(strkey)) break; //将键盘录入数据写入输出流输出 client_bufOut.write(strkey); client_bufOut.newLine(); client_bufOut.flush(); //读取服务端返回的数据 String str1=client_bufIn.readLine(); //打印读取到的服务器返回数据 System.out.println("Server:"+str1); } //关闭键盘录入 bufr.close(); //关闭客户端资源 s.close(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统