Java实例开发05-01 简单的多线程服务器
2011-09-20 21:58
531 查看
知识点:
1.Socket编程:ServerSocket类 Socket类
2.Java多线程:编程原则(能够独立在一个线程中完成的操作就应该开辟一个新的线程)
3.telnet命令
[注]win7是有telnet功能的,只是默认没有开启,开启方法:
打开“控制面板”,找到程序和功能,然后点击左上方的“打开或关闭windows功能”,会弹出windows功能的对话框,这个对话框里面有许多windows的小功能,再找到TelentClient,打上勾,确认即可.
源代码:
/**
* @Author:胡家威
* @CreateTime:2011-9-20 下午08:30:28
* @Description:
*/
package com.yinger.chap51;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class ReceiveServer {
final int PORT=9090;
public static void main(String[] args) {
new ReceiveServer();
}
public ReceiveServer(){
ServerSocket serverSocket = null;
Socket socket = null;
ServerThread serverThread = null;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("Server is start!\t"+new Date());
System.out.println("port:"+serverSocket.getLocalPort());
System.out.println("timeout:"+serverSocket.getSoTimeout());
while(true){
socket = serverSocket.accept();
serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread extends Thread{
Socket socket;
BufferedReader br;
PrintWriter pw;
public ServerThread(Socket socket) {
this.socket = socket;
try {
// 对socket的输入输出流进行封装
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);//true
pw.println("Welcom to server!\t"+new Date());
pw.println("LocalPort:"+socket.getLocalPort());
pw.println("Port:"+socket.getPort());
pw.println("what can I do for you?");
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String command;
while(true){
try {
command= br.readLine();
if(command==null || command.trim().equalsIgnoreCase("exit")){
break;
}else if(command.trim().equalsIgnoreCase("help")){
pw.println("HELP\tQUERY\tEXIT");
}else if(command.trim().equalsIgnoreCase("query")){
pw.println("I don't know!");
}else{
pw.println("command is not found!Please see HELP!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();//关闭连接!
} catch (IOException e) {
e.printStackTrace();
}
}
}
效果展示:
服务器启动:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/201109202157293921.png)
建立连接:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/20110920215730757.png)
测试:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/201109202157319230.png)
通过 Wiz 发布
1.Socket编程:ServerSocket类 Socket类
2.Java多线程:编程原则(能够独立在一个线程中完成的操作就应该开辟一个新的线程)
3.telnet命令
[注]win7是有telnet功能的,只是默认没有开启,开启方法:
打开“控制面板”,找到程序和功能,然后点击左上方的“打开或关闭windows功能”,会弹出windows功能的对话框,这个对话框里面有许多windows的小功能,再找到TelentClient,打上勾,确认即可.
源代码:
/**
* @Author:胡家威
* @CreateTime:2011-9-20 下午08:30:28
* @Description:
*/
package com.yinger.chap51;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class ReceiveServer {
final int PORT=9090;
public static void main(String[] args) {
new ReceiveServer();
}
public ReceiveServer(){
ServerSocket serverSocket = null;
Socket socket = null;
ServerThread serverThread = null;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("Server is start!\t"+new Date());
System.out.println("port:"+serverSocket.getLocalPort());
System.out.println("timeout:"+serverSocket.getSoTimeout());
while(true){
socket = serverSocket.accept();
serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread extends Thread{
Socket socket;
BufferedReader br;
PrintWriter pw;
public ServerThread(Socket socket) {
this.socket = socket;
try {
// 对socket的输入输出流进行封装
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);//true
pw.println("Welcom to server!\t"+new Date());
pw.println("LocalPort:"+socket.getLocalPort());
pw.println("Port:"+socket.getPort());
pw.println("what can I do for you?");
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String command;
while(true){
try {
command= br.readLine();
if(command==null || command.trim().equalsIgnoreCase("exit")){
break;
}else if(command.trim().equalsIgnoreCase("help")){
pw.println("HELP\tQUERY\tEXIT");
}else if(command.trim().equalsIgnoreCase("query")){
pw.println("I don't know!");
}else{
pw.println("command is not found!Please see HELP!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
socket.close();//关闭连接!
} catch (IOException e) {
e.printStackTrace();
}
}
}
效果展示:
服务器启动:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/201109202157293921.png)
建立连接:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/20110920215730757.png)
测试:
![](http://images.cnblogs.com/cnblogs_com/yinger/201109/201109202157319230.png)
通过 Wiz 发布
相关文章推荐
- Java实例开发05-01 简单的多线程服务器
- Java实例开发05-02 简单的HTTP服务器端
- Java实例开发05-02 简单的HTTP服务器端
- Java邮件开发简单实例
- 多线程编程实例----服务器客户端简单通信
- Java 多线程 简单实例 (Thread)
- java简单实现多线程及线程池实例详解
- Java 多线程ServerSocket通讯简单实例(基于TCP协议)
- Java实例开发01-01 屏幕捕获工具
- Java Tread多线程(0)一个简单的多线程实例
- java实现一个简单的Web服务器实例解析
- 阿里云服务器 ubuntu 12.4 安装workerman与3个简单开发实例测试
- java图像界面开发简单实例-JTextField、JPasswordField、JButton及事件的简单应用
- 用Java 开发 WebService Axis简单实例
- Java微信公众平台开发_01_本地服务器映射外网
- java多线程---Thread和Runnable简单实例
- java图像界面开发简单实例-JPanel应用
- Java实例开发01-02 文本阅读器
- 微信公众账号开发简单实例【java】
- java中用Axis开发webservice的简单实例