您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第三季学习笔记-TCP实现ECHO程序
发布时间:2017-08-10 15:14:06编辑:雪饮阅读()
模仿客户端与服务端:
服务端代码:
package com.vince.echo;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServerDemo {
public static void main(String[] args) throws IOException {
//创建一个服务端的socket
ServerSocket ss=new ServerSocket(8000);
System.out.println("服务器已启动");
boolean flag=true;
while(flag){
System.out.println("正在等待连接。。。");
Socket s=ss.accept();
System.out.println(s.getInetAddress().getHostAddress()+"已连接");
//获取输入输出流
//s.getInputStream()获取scoket的客户端输入字节流
//InputStreamReader将客户端输入的字节流转换为字符流
//BufferedReader用缓冲的方式读取字符流,并且提供按行读取,只要要读取的字符中包含换行符\n
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
//s.getOutputStream()获取scoket的输出字节流
//BufferedOutputStream为scoket的输出字节流通过提供缓冲功能
//PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte型)的格式化表示形式。
PrintStream ps=new PrintStream(new BufferedOutputStream(s.getOutputStream()));
boolean bool=true;//循环接收数据
while(bool){
//内层循环为每个客户端单独处理
String info=br.readLine();
if("".equals(info)||"bye".equals(info)){
bool=false;
}
else{
System.out.println(info);
ps.println("echo:"+info);
ps.flush();
}
}
ps.close();
br.close();
}
}
}
客户端代码:
package com.vince.echo;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class EchoClientDemo {
public static void main(String[] args) throws UnknownHostException,IOException{
Socket s=new Socket("192.168.1.121",8000);
System.out.println("与服务器连接成功");
Scanner input=new Scanner(System.in);
boolean flag=true;
//获取输入输出流
PrintStream ps=new PrintStream(new BufferedOutputStream(s.getOutputStream()));
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
while(flag){
System.out.println("请输入:");
String info=input.next();
if("bye".equals(info)){
flag=false;
}
else{
ps.println(info);
ps.flush();
System.out.println(br.readLine());
}
}
br.close();
ps.close();
}
}
服务端与客户端执行都在cmd下比较可观:
cmd进入项目的bin目录
服务端执行命令:
java com.vince.echo.EchoServerDemo
客户端命令执行:
java com.vince.echo.EchoClientDemo
关键字词:javase,tcp,echo