网络编程TCP(四)
来源:互联网 发布:台山学美工要多少钱 编辑:程序博客网 时间:2024/05/29 16:48
需求:建立一个文本转换器
客户端给服务端发送文本,服务端会将文本转换成大写再返回客户端
而且客户端可以不断的进行文本转换,当客户端输入over,转换结束。
分析:
客户端:
既然是操作设备上的数据,那么就可以使用io技术,并且照io的操作规律来思考。
源:键盘录入。
目的:网络设备,网络输出流。
现象:客户端和服务端都在莫名的等待
为什么呢?
因客户端和服务端都有阻塞方法。这些方法没有读到标记结束,就一直等。
而导致两端都在等待。
遇见这样的问题,直接查抄阻塞式方法。
客户端给服务端发送文本,服务端会将文本转换成大写再返回客户端
而且客户端可以不断的进行文本转换,当客户端输入over,转换结束。
分析:
客户端:
既然是操作设备上的数据,那么就可以使用io技术,并且照io的操作规律来思考。
源:键盘录入。
目的:网络设备,网络输出流。
操作的是文本数据,可以选择字符流
import java.io.*;import java.net.*;public class TcpClient4{public static void main(String[] args) throws Exception{Socket s=new Socket("169.254.74.22",10001);//定义读取键盘数据的对象。BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//定义一个目的,将数据写入到socket输出流,发给服务端。BufferedWriter bwout=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//定义一个输入流,获取服务端反馈的信息BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream()));String line=null;while((line=br.readLine())!=null){ if("over".equals(line)) break; bwout.write(line); bwout.newLine(); bwout.flush(); String str=brin.readLine(); System.out.println("Server"+str);}br.close();s.close();}}服务器端:
import java.io.*;import java.net.*;class TcpServer4{public static void main(String[] args) throws Exception{ServerSocket ss=new ServerSocket(10001);Socket s=ss.accept();String ip=s.getInetAddress().getHostAddress();System.out.println(ip);//定义socket中的数据BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream())); //将反馈的信息通过socket发出去BufferedWriter bwout=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line=null;while((line=brin.readLine())!=null){ bwout.write(line.toUpperCase()); bwout.newLine(); bwout.flush();}s.close();ss.close();}}该例子出现的问题
现象:客户端和服务端都在莫名的等待
为什么呢?
因客户端和服务端都有阻塞方法。这些方法没有读到标记结束,就一直等。
而导致两端都在等待。
遇见这样的问题,直接查抄阻塞式方法。
- 网络编程TCP(四)
- 网络编程TCP(四)
- TCP/IP 网络编程(四)
- UNIX网络编程---基本TCP套接字编程(四)
- 高性能网络编程(四)---- tcp 连接的关闭
- 高性能网络编程(四)--TCP连接的关闭
- 网络编程(TCP)
- 网络编程(TCP)
- 网络编程(TCP)
- 【UNIX网络编程(四)】TCP套接字编程详细分析
- 网络编程(tcp协议)
- 网络编程TCP(一)
- 网络编程TCP(二)
- 网络编程TCP(三)
- TCP网络编程(Python)
- C++ 网络编程(TCP)
- 网络编程(3)TCP
- Java网络编程(TCP)
- 网络编程TCP(三)
- 记录我的新工作(七)
- android学习笔记7:线性布局
- 上传照片实现记录(2)——选择照片对话框
- 交易事务超时注意事项
- 网络编程TCP(四)
- Sql注入测试-Pangolin 穿山甲
- SQL遇见的一个误区
- IOC和DI
- WPF 中资源路径的问题
- [Sql]EXCEPT 和 INTERSECT关键字
- c# oracle 中时间转字符串
- Oracle编程艺术读书比较--堆表
- flickr之我们心中的点子