3. 服务器发送信息给客户和客户发送信息给服务器相应代码的区别:
1) 服务器发送给客户(给定的字符串发送给客户):
java.io.OutputStream outPut = socket.getOutputStream();
//创建要发送的字符串
String str = "你好,欢迎进我的服务器!\r\n";
//把字符串转变成为字节数组
//因为在网络上,是以字节传输的
byte[] strs = str.getBytes();
//输出字符
outPut.write(strs);
outPut.flush();
2)服务器发送给客户(我们输入的字符串发送给客户):
//针对套接字创建输出流对象
java.io.OutputStream outPut = socket.getOutputStream();
System.out.println("输入你要发送的文字:");
//读取我们要从服务器敲入的数据,同时放入缓存中
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
//读取缓存中的数据,转化为字符串
String word=String.valueOf(read.readLine());
//给字符串加上换行符
word="服务器说:"+word+"\r\n";
//把字符串拆为字节放入字节数组中
byte[] bytes=word.getBytes();
//输出字节数组中的字节到客户机,客户机读取字节
outPut.write(bytes);
//强制输出
outPut.flush();
3)读取客户发送给服务器的信息:
/**下面的所有代码为从客户机读取字符*/
//从输入输出流套接字中获得输入输出流
java.io.InputStream inPut = socket.getInputStream();
//从输入流中读取字节
int in=inPut.read();
//创建一个缓冲区
StringBuffer sb = new StringBuffer();
//判断所获取的是否会回车符或者窗口是否关闭,-1代表关闭窗口,13为回车符
while(in!=-1&&in!=13){
//如果不是,则把获取的字节转化为字符添加到缓冲区中
sb.append((char)in);
//从输入流中读取一个字节
in=inPut.read();
}
//把缓冲区的内容转化为字符串,trim为去掉字符串的尾空格号
String string="客户机说:"+sb.toString().trim();
//判断字符串是否为bye,如果是的就关闭服务器,退出,如果不是则进行循环内部程序
while(!string.equals("客户机说:bye")){
//打印从输入流缓冲区中的字符串
System.out.println(string);
//再重新读取内容
in=inPut.read();
//创建一个缓冲区
StringBuffer sb = new StringBuffer();
//判断所获取的是否会回车符或者窗口是否关闭,-1代表关闭窗口,13为回车符
while(in!=-1&&in!=13){
//如果不是,则把获取的字节转化为字符添加到缓冲区中
sb.append((char)in);
//从输入流中读取一个字节
in=inPut.read();
}
//把缓冲区的内容转化为字符串
string="客户机说:"+sb.toString().trim();
}
socket.close();
我们一定要注意,在客户发送信息,服务器读取的时候,inPut.read()读取的是字节,而不是字符,所以我们在加入缓存(StringBuffer)的时候一定要先强行转换,把字节转换为字符,在加入(append())到缓存中;如果是服务器发送信息的话,注意在数据流中数据是以字节的形式传输的,所以一定要先转化为字节(getByte()方法)后再传输(outs.write());
上面我们还要注意StringBuffer和BufferedReader的区别,还有一个BufferedReader:
StringBuffer是我们在客户输入字符的时候,把我们输入的字符存入StringBuffer缓存中,主要是以字符存储来实现缓存,当遇到某个我们设定的字符(我们这里设定的是回车符)时候就尽心输出字符串;
BufferedReader是从输入流中读取文本,缓冲各个字符,从而实现高效读取,我们这是用在服务器发送信息给客户上;创建对象时一定要传入输入流对象;获取它的字符串的方法是它对应的readLine()方法,要能输出的话还要在后面再加个toString()方法;注意它的readLine()方法,会阻塞,直到客户端发送了一个回车符后,才将读取的字符串返回,如果在服务器端使用readLine()方法,无论客户机输入了多少字符串,如果没有回车符出现,这个方法就无法执行完毕,从而返回一个字符串,虽然这些字符串都 已经读入了内存;
BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入;这里没有用到;
分享到:
相关推荐
实例01-简单网络聊天室 实例02-网络聊天室服务器 实例03-网络聊天室客户端 实例04-定时发送消息 实例05-传输文件 实例06-GETIP 实例07-域名解析 实例08-TUSPY 实例09-多人聊天室 实例10-端口扫描 实例11-异步网络...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 ...
将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 ...
java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER 文件传送,多文件(超大文件)传送功能的实现,含文档。 ...
5.5.3 聊天室服务器端程序的主要实现代码和分析 154 5.5.4 创建聊天室的客户端程序 162 5.5.5 聊天室客户端程序的主要实现代码和分析 163 习题 170 实验 170 第6章 WinInet编程 172 6.1 MFC WinInet类 ...
将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...
将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示...
java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,...
java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,...
98 3.4.2 实例实现 101 3.5 获取局域网内其他计算机的信息 103 <br>第4章 IE编程实例 111 4.1 简单的浏览器的实现 111 4.1.1 实现原理 111 4.1.2 实例实现 112 4.2 删除IE相关...
98 3.4.2 实例实现 101 3.5 获取局域网内其他计算机的信息 103 <br>第4章 IE编程实例 111 4.1 简单的浏览器的实现 111 4.1.1 实现原理 111 4.1.2 实例实现 112 4.2 删除IE相关...
98 3.4.2 实例实现 101 3.5 获取局域网内其他计算机的信息 103 <br>第4章 IE编程实例 111 4.1 简单的浏览器的实现 111 4.1.1 实现原理 111 4.1.2 实例实现 112 4.2 删除IE相关...