import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class EchoThread implements Runnable {
private Socket client = null;
public EchoThread(Socket client) {
this.client = client;
}
public void run() {
PrintStream out = null; // 打印流输出最方便
BufferedReader bufferedReader = null;// 接收输入流
try {
out = new PrintStream(client.getOutputStream());// 输出流
// 准备接收客户端的输入信息
bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
boolean flag = true ; // 标志位,表示可以一直接收并回应信息
while (flag) {
String acceptContent = bufferedReader.readLine();// 接收客户端发送的内容
if ("quit".equals(acceptContent)|| (acceptContent == null)) {//如果输入quit就退出
flag = false;
} else if ("".equals(acceptContent.trim())) {//没有内容
out.println("Echo : 请输入内容 ");
} else {
System.out.println(acceptContent);
out.println("Echo : " + acceptContent);//回应信息
}
}
bufferedReader.close();
out.close();
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class EchoThreadServer {
public void startSocket() {
ServerSocket server = null; // 定义ServerSocket类
Socket client = null; // 表示客 户端
try {
server = new ServerSocket(8888); // 服务器在8888端口上监听
boolean flag = true; // 定义个标记位
while (flag) {
System.out.println("服务器运行,等待客户端连接。");
client = server.accept(); // 得到连接,程序进入到阻塞状态
// 1.
// new Thread(new EchoThread(client)).start(); // 每一个客户端表示一个线程
//2.
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(new EchoThread(client));
}
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
EchoThreadServer echoThreadServer = new EchoThreadServer();
echoThreadServer.startSocket();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class EchoClient {
public static void main(String[] args) {
Socket client = null;// 客户端
BufferedReader input = null;// 接收键盘数据
BufferedReader buf = null;// 一次接收服务器数据
PrintStream out = null;// 发送数据
Boolean flag = true;//标识
try {
client = new Socket("localhost", 8888);
input = new BufferedReader(new InputStreamReader(System.in));// 键盘数据
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));// 服务器响应数据
out = new PrintStream(client.getOutputStream());// 发送数据
while (flag) {
System.out.println("输入信息 : ");
String str = input.readLine();// 接收键盘输入信息
out.println(str);//发送数据
if ("quit".equals(str)) {//如果输入quit就退出
flag = false;
} else {
System.out.println(buf.readLine());//接收返回结果,输出结果信息
}
out.flush();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {//释放资源
try {
out.close();
buf.close();
input.close();
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
Java Socket编程.pdf Java Socket编程.pdf Java Socket编程.pdf
import java.io.*; import java.net.*; import java.util.*; import java.lang.*; public class Server extends ServerSocket { private static ArrayList User_List = new ArrayList(); private static ...
java socket网络编程,包括服务与客户端,多线程支持多客户端同时在线。
java socket 编程,Java socket 编程实例,对于初学者是一个非常好的东西,对于有过经验的是非常好的更深了解的东西,希望大家共同进步
浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程
Java Socket 编程 html教程
java socket 编程文档
java socket 实现简单的客户端和服务端通信
java Socket 编程配套源码
基于TCP和UDP的socket编程,给出了最简单的示例代码。 相关博文地址: http://blog.csdn.net/wintys/archive/2008/12/15/3525643.aspx http://blog.csdn.net/wintys/archive/2008/12/15/3525619.aspx
本程序用socket编程实现发送邮件的功能,并测试成功
Java socket编程实例.pdf
Java Socket编程笔记_动力节点Java学院整理,动力节点口口相传的黄埔军校
Java Socket编程
java Socket 编程
浅谈Socket编程及Java实现,学习java socket编程
Java Socket编程