三步学会Java Socket编程(二)
来源:互联网 发布:迅雷xp系统优化工具 编辑:程序博客网 时间:2024/06/08 01:37
第二步 多个客户同时连接
在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在java中,实现以上功能特点是非常容易的。
设计原理:
主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。运用Thread类或Runnable接口来实现是不错的办法。
实现消息共享}
import java.io.*;
import java.net.*;
public class Server extends ServerSocket
{
private static final int SERVER_PORT = 10000;
public Server() throws IOException
{
super(SERVER_PORT);
try
{
while (true)
{
Socket socket = accept();
new CreateServerThread(socket);
}
}
catch (IOException e)
{}
finally
{
close();
}
}
//--- CreateServerThread
class CreateServerThread extends Thread
{
private Socket client;
private BufferedReader in;
private PrintWriter out;
public CreateServerThread(Socket s) throws IOException
{
client = s;
in = new BufferedReader(new InputStreamReader(client.getInputStream(), "GB2312"));
out = new PrintWriter(client.getOutputStream(), true);
out.println("--- Welcome ---");
start();
}
public void run()
{
try
{
String line = in.readLine();
while (!line.equals("bye"))
{
String msg = createMessage(line);
out.println(msg);
line = in.readLine();
}
out.println("--- See you, bye! ---");
client.close();
}
catch (IOException e)
{}
}
private String createMessage(String line)
{
xxxxxxxxx;
}
}
public static void main(String[] args) throws IOException
{
new Server();
}
}
这个程序监听10000端口,并将接入交给CreateServerThread线程运行。CreateServerThread线程接受输入,并将输入回应客户,直到客户输入"bye",线程结束。我们可以在createMessage方法中,对输入进行处理,并产生结果,然后把结果返回给客户。
- 三步学会Java Socket编程(二)
- 三步学会Java Socket编程(二)
- 三步学会java Socket编程(二)
- 三步学会Java Socket编程(二)
- Java基础 三步学会Java Socket编程(二)
- 三步学会Java Socket编程(三)
- 三步学会Java Socket编程(三)
- 三步学会java Socket编程(三)
- 三步学会Java Socket编程(三)
- 三步学会Java Socket编程
- 三步学会Java Socket编程1
- 三步学会Java Socket编程2
- 三步学会Java Socket编程3
- 三步学会Java Socket编程
- 三步学会Java Socket编程
- 转 三步学会Java Socket编程
- 三步学会Java Socket编程
- 三步学会Java Socket编程
- Unable to locate tools.jar. Expected to find it in D:/jre6/lib/tools.jar问题解决
- linux 一个简单的进程创建例子
- 黑马程序员——第五天(Java面向对象基础)
- 再谈java事件监听机制
- (C语言读书笔记)符号解析规则,以及const
- 三步学会Java Socket编程(二)
- jstree 新建node后,刷新jstree的改变的那一部分
- 使用TortoiseSVN下载sipdroid
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- UIViewController生命周期
- JAVA用户自定义事件监听完整例子
- 缓存服务varnish安装配置
- 深深的思考与共鸣——资源共享
- jffs2文件系统制作