当前位置:首页 > 编程开发

Java基础 三步学会Java Socket编程(二)

webgou17年前 (2009-10-10)编程开发87

http://java.ccidnet.com/art/3539/20070606/1103869_1.html
第二步 多个客户同时连接

在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在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方法中,对输入进行处理,并产生结果,然后把结果返回给客户。 

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=42

标签: javasocket
分享给朋友:

“Java基础 三步学会Java Socket编程(二)” 的相关文章

Cortex-A5 MPCore处理器(ARM)

 ARM发布了ARM® Cortex-A5 MPCore处理器,该处理器是目前能够在最多类型的设备上提供互联网功能的、最小、功耗最低的ARM多核处理器。这些设备包括从超低成本手机、多功能手 机和智能移动设备到普遍使用的嵌入式、消费和工业设备。Cortex-A5处理器可以以具有极其…

Eclipse 操作MySQL数据

下面是MySQL 5.1参考手册里给的一些说法:INSERT语句的速度 插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例:˂连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 这不考虑打开表的初始开销,每个并发运行的…

作 业

作业对象:组合进程,单独操作,限制进程 通常,必须将一组进程当作单个实体来处理。例如,当让Microsoft Developer Studio为你创建一个应用程序项目时,它会生成C l . e x e,C l . e x e则必须生成其他的进程(比如编译器的各个函数传递)。如果用户想要永远停止该应用…

ARM1136JF-S 处理器

ARM1136JF-S 处理器…

窗口刷新问题(WM_PAINT、BeginPaint、EndPaint的说明)

来源:看文章 Windows API编程,WM_PAINTWindows窗口个重消息,应程序就通过响应这个消息完成窗口绘制。 The WM_PAINT message is generated by the system and should not be sent by an appli…

Unity3D占用内存太大的解决方法

 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化....…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。