开发者学堂课程【Java 高级编程:Echo 程序模型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/429
Echo 程序模型
TCP 程序的基本实现
TCP 的程序开发是网络程序的最基本的开发模型,其核心的特点是使用两个类实现数据的交互处理: ServerSocket (服务器端)、Socket(客户端)
: ServerSocket 与 Socket:
ServerSocket 的主要目的是设置服务器的监听端口,而 Socket 需要指明要连接的服务器地址与端口。
实现一个数据的最简单的操作如下:即: Echo 程序实现
范例:实现服务器端的定义
package cn.mldn.demo.server;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class EchoServer {
public static void main(String[] args) throws Exception {
ServerSocket server=new ServerSocket(9999);//设置服务器端的监听端口
System.out.println("等待客户端连接............");
Socket client=server.accept();//有客户端连接
//首先需要先接收客户端发送来的信息,而后才可以将信息处理之后发送回客户端
Scanner scan = new Scanner(clien.getInputStream());//客户端输入流
scan. useDelimiter("\n");//设置分隔符
PrintWriter out=new PrintWriter(client.getOutputStream());//客户端输出流
boolean flag=true;//循环标记
while (f1ag) {
if(scan.hasNext())
{
//现在有数据发送
String val = scan.next();//接收发送的数据if ("byebye".equalsIgnoreCase(va1)) {out.println("ByeByeBye....");
flag = false;//结束循环
}
else {
out.println("[ECHO]"+ val);
client.close();
server.close(;
注:如果此时需要对程序进行测试,最好的方法是直接使用.最好的方法是直接使用 telnet 命令完成,但是此命令在 windows7 已经变为了默认不开启状态,所以如果要想使用则必须单独启用此命令。
范例:客户端代码
package cn.mldn.demo.client;
import java.io.BufferedReader;
import java.io.InputStreamReader ;import java.net.Socket;
public class EchoClient (
private static final BufferedReader KEYBOARD_ INPUT = new BufferedReader(new InputStreamReader(Syspublic static void main(String[ ] args) throws Exception
Socket client = new Socket("localhost",9999);
//定义服务器端的连接信息
//现在的客户端需要有输入与输出的操作支持,所以依然要准备出Scanner与PrintWriter
Scanner scan = new Scanner(client. getInputStream());
//接受服务器端的输入内容
PrintWriter out = new PrintWriter(client.getOutputStream());
//向服务器端
public String getString(String prompt) throws Exception
{
System.out.print (prompt) ;
String str = KEYBOARD_ INPUT. readLine() ;
return str ;
if (scan. hasNext())
{//服务器端有回应了
System.out.println(scan.next());
if ("byebye".equalsIgnoreCase(input))
{
flag
scan.close();
out.c1ose();
c1ient.close();
注:此时就实现了一个最基础的客户端与服务器端之间的数据通讯操作。