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

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

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

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编程(二)” 的相关文章

Firefox about: pages

Special pages available in firefox : about: A simple prompt without any parameter will display the Mozilla “about” information. abou…

ATL.SubclassWindow分析

[B]ATL.SubclassWindow分析[/B] [template BOOL CWindowImplBaseT::SubclassWindow(HWND hWnd) { BOOL result; ATLASSUME(m_hWnd == NULL); ATLASSERT(::IsWi…

Android滑动手势侦测方法介绍

在Android手机操作系统中支持各种滑动手势的操作。我们在这里为大家介绍的方法主要就是针对这些手势如何能在Android平台中侦测出来。下面就让我们大家一起来看看Android滑动手势具体的识别方法吧。Android SDK提供了一个listener类来侦测各种不同的手势:SimpleOnGest…

如何快速的读懂电路原理图?

如何快速的读懂电路原理图? 如何快速的读懂电路原理图,关键是要掌握其要点, 要分析电路图的原理, 初学人员要分析电子电路或了解、掌握电子产品的工作原理,看懂电子产品的电路图是一项基本功。怎样快速地看懂电子产品的电路图呢? 一、要学习并熟练掌握电子产品中常用的电子元、器件的基本知识,如电…

the uml of gof

gang of four `s uml…

UTF-8 and Unicode FAQ

 2000年2月这篇文章说明了在 POSIX 系统 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的信息. 在将来不远的几年里, Unicode 已经很接近于取代 ASCII 与 Latin-1 编码的位置了. 它不仅允许你处理处理事实上存在于地球上的任何语言文…

发表评论

访客

看不清,换一张

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