----------- Android培训、Java培训、Java学习型技术博客、期待与您交流! ------------
使用IO和Socket服务在本地主机模拟文本转换服务器.
需求分析:从客户端发送文本数据到服务器端,服务器端将文本数据转换为大写后返回给客户端,而且客户端可以不断的输入进行文本转换,当客户端输入over时,转换结束.
客户端:键盘录入,网络输出流和读取服务器返回的输入流
1.建立服务
2.获取键盘录入
3.将数据发送给服务端
4.获取服务器端返回的转换数据
5.结束,关闭资源.
->创建Socket服务,并指定要连接的主机和端口
class Client
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("localhost", 10000);
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line = bufr.readLine()) != null)
{
if("over".equals(line))
break;
bufOut.write(line);
String str = bufIn.readLine();
System.out.println("Server: " + str);
}
bufr.close();
s.close();
}
}
服务器:socket读取流和socket输出流
->建立服务端的socket服务,SocketServer并监听一个端口
->通过SocketServer的方法accept,获取客户端对象.
class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10000);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + ":" + " is connected");
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = bufIn.readLine()) != null)
{
System.out.println(line);
bufOut.write(line.toUpperCase());
}
s.close();
ss.close();
}
}
开启两个控制台,一个作为客户端,一个作为服务器
编译后运行.问题出现
1.服务器等待客户端的输入,客户端输入一次后回车,服务器没有显示收到消息.但此时的客户端也在等待,无法再次输入数据.
服务器与客户端两者都在等待.唯有Ctrl+C才能停止.
-->分析源代码后,利用到缓冲区技术,但是未调用flush()方法.所以在代码中flush(),
-->结果仍为上诉情况.
2.注意到readLine()方法为阻塞式方法.何时才会返回数据?那就是遇到回车换行(\r\n)时返回.每次从键盘录入时都是将回车换行前的数据读取,接着等待读取...
所以客户端和服务器两者同时等待输入数据.
在readLine()方法处添加如下代码
客户端处
服务器处
完整代码如下:
import java.io.*;
import java.net.*;
class Client
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("localhost", 10000);
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line = bufr.readLine()) != null)
{
if("over".equals(line))
break;
bufOut.write(line);
bufOut.newLine();
bufOut.flush();
String str = bufIn.readLine();
System.out.println("Server: " + str);
}
bufr.close();
s.close();
}
}
class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10000);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + ":" + " is connected");
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter bufOut =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
while((line = bufIn.readLine()) != null)
{
System.out.println(line);
bufOut.write(line.toUpperCase());
bufOut.newLine();
bufOut.flush();
}
s.close();
ss.close();
}
}
运行结果
Done..
分享到:
相关推荐
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
黑马程序员__移动商城项目实战 包括黑马程序员乐淘商城实战和慕课React+Antd
《黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02》 本文将深入探讨2016年黑马程序员发布的Hibernate框架开发课程的第二天内容。Hibernate,一个强大的Java持久化框架,简化了数据库操作,为开发者提供了...
马程序员_黎活明__Spring如何装配各种集合类型的属性.ppt )
《Hibernate框架深度解析——基于黑马程序员2016版教学资料》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供数据持久化的对象模型,使得开发者可以...
黑马程序员_iOS基础视频_最适合初学者入门video,百度云链接。
黑马程序员_android实例教程,网上找的的安卓教材,真心不错。
传智播客_javaWEB讲义和笔记资料_day09 黑马程序员_javaWEB教程讲义和笔记资料_day09
黑马程序员_JDBC视频教程,仅供参考学习,有需要的可以下载,本人有全栈开发工程师各种学习技术视频教程及本档,有需要的可以留言或到本人账号下载
【标题】"Pinyougou_html_css_黑马程序员_" 指的是一个关于HTML和CSS的实战项目,这个项目可能是由“黑马程序员”这个知名的在线教育平台提供的。"品优购"可能是该项目的一个虚构的电商网站名称,目的是为了让学生...
黑马程序员_2小时教你写一个android程序[第06天]课件源码
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
在"黑马程序员_javaWEB讲义和笔记资料_day08"中,我们可以预见到这一天的学习内容将深入到Java Web开发的核心概念和技术。"传智播客"作为知名的技术教育机构,其课程通常涵盖全面且深入的IT知识,因此这些讲义和笔记...
### 黑马程序员_超全面的JavaWeb教程-视频+源码笔记 #### JavaWeb基础知识概览 在深入了解本教程之前,我们先来简要回顾一下JavaWeb的基础知识。JavaWeb是利用Java语言开发Web应用的技术集合。它主要包括Servlet、...
黑马程序员_张孝祥_Java多线程与并发库,老师讲的非常仔细,老师很有耐心.欢迎大家下载学习.
黑马程序员_2小时教你写一个android程序[第08天]课件源码 Android软件安全和逆向分析 案例:破解小软件案例与保护自己的android程序
Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。...配合"黑马程序员_(适合初学者入门的Java基础视频).txt"文本资料,学习者还可以查阅相关知识点和代码示例,进一步提高学习效率。
【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...
安卓开发视频教程,文档内含有下载链接。 黑马程序员_精通android4.0开发视频(工124集)
黑马程序员_ibatis视频教程,仅供参考学习,有需要的可以下载,本人有全栈开发工程师各种学习技术视频教程及本档,有需要的可以留言或到本人账号下载