Java实现简单的server/client回显功能

Java实现简单的server/client回显功能

Socket是指在一个特定编程模型下,进程间通信链路的端点。因为这个特定编程模型的流行,Socket这个名字在其他领域得到了复用,包括Java叫技术。

如果要建立连接,一台机器必须运行一个进程来等待连接,而另一台机器必须试图到达第一台机器。这个电话系统类似:一方必须发起呼叫,而另一方在此时必须等待电话呼叫。

java网络模型图

下面通过一个有“回显”功能的服务器和客户端来介绍应用java.net包编写网络应用程序。

这个例子主要功能是服务器端的程序等待客户的输入,然后将读取到的信息回显给客户端,虚拟主机,同时在服务器端的控制台输出。而客户端从控制台接收信息后,向客户端发送输入,并接收服务器的回显数据,然后显示在控制台。

客户端程序代码如下:

1 package com.javapp.ch11; 2 import java.io.*; 3 import java.net.*;* Description: 具有“回显”功能的服务器端和客户端程序 EchoClientDemo {SERVERPORT = 990; main(String[] args) {11try {Socket s = new Socket(“localhost”,SERVERPORT);14System.out.println(“socket = ” + s);BufferedReader in = new BufferedReader(new InputStreamReader(s17 .getInputStream()));PrintWriter out = new PrintWriter(new BufferedWriter(20new OutputStreamWriter(s.getOutputStream())),true);BufferedReader stdin = new BufferedReader(23new InputStreamReader(System.in));24System.out.println(“Enter a string, Enter BYE to exit! “);25while (true) {out.println(stdin.readLine());String str = in.readLine();(str == null) {32break;33 }34 System.out.println(str);35 }36 s.close();37} catch (IOException e) {38System.err.println(“IOException” + e.getMessage());39 }40 }41 }

上面客户端程序中。首先用java.net包中的Socket类建立一个连接套接字,其后应用的Socket对象的getInputStream方法从服务器接收数据,美国服务器,服务器空间,并且应用Socket对象的getOuputStream方法发送数据到服务器。创建完输入输出流,就可以像读写文件的方式来读写数据。

支持多客户端的“回显”服务器端程序代码如下:

1 package com.javapp.ch11; 2 import java.io.*; 3 import java.net.*;* Description:支持多客户端的“回显”服务器端程序 EchoServerThreadDemo {SERVERPORT = 990; main(String[] args) {11try {number = 1;ServerSocket s = new ServerSocket(SERVERPORT);16System.out.println(“Started: ” + s);17while (true) {Socket incoming = s.accept();20System.out.println(“Connection ” + number + ” accepted: “);21 System.out.println(incoming);22// 启动一个线程来进行服务器端和客户端的数据传输。Thread t = new EchoThread(incoming,number);25 t.start();26number++;27 }28} catch (IOException e) {29System.err.println(“IOException”);30 }31 }32 }33 class EchoThread extends Thread {34private Socket s;35int n;36public EchoThread(Socket incoming,int number) {37s = incoming;38n = number;39 } run() {41try {BufferedReader in = new BufferedReader(new InputStreamReader(s44 .getInputStream()));PrintWriter out = new PrintWriter(new BufferedWriter(47new OutputStreamWriter(s.getOutputStream())),true);48System.out.println(“Hello! Enter BYE to exit.”);(true) {String line = in.readLine();(line == null) {55break;56} else {57if (line.trim().equals(“BYE”)) {58System.out.println(“The client ” + n + ” entered BYE!”);59System.out.println(“Connection ” + n + ” will be closed!”);60break;61 }62System.out.println(“Echo ” + n + “: ” + line);out.println(“Echo ” + n + “: ” + line);65 }66 }s.close();69} catch (IOException e) {70System.err.println(“IOException”);71 }72 }73 }

是我一生的快乐;失去你,是我一生的遗憾;没有你,无法感受心灵的震撼。

Java实现简单的server/client回显功能

相关文章:

你感兴趣的文章:

标签云: