Java Socket线程的设计原理介绍
Java Socket线程我们经常会用到的技术,但是有很多程序员还是有不少的使用问题,下面我们就看看如何才能进行有关的代码编写,希望大家又说收获。网络的伟大之一也是信息共享,Server可以主动向所有Client广播消息,同时Client也可以向其它Client发布消息。
下面看看如何开发一个可以实时传递消息的程序。
Java Socket线程的设计原理:
服务器端接受客户端的连接请求,同时启动一个线程处理这个连接,线程不停的读取客户端输入,然后把输入加入队列中,等候处理。在线程启动的同时将线程加入队列中,以便在需要的时候定位和取出。
{源码}
1.import java.io.*;
2.import java.net.*;
3.import java.util.*;
4.import java.lang.*;
5.public class Server extends ServerSocket
6.{
7.private static ArrayList User_List = new ArrayList();
8.private static ArrayList Threader = new ArrayList();
9.private static LinkedList Message_Array = new LinkedList();
10.private static int Thread_Counter = 0;
11.private static boolean isClear = true;
12.protected static final int SERVER_PORT = 10000;
13.protected FileOutputStream LOG_FILE = new FileOutputStream("d:/connect.log", true);
14.public Server() throws FileNotFoundException, IOException
15.{
16.super(SERVER_PORT);
17.new Broadcast();
18.//append connection log
19.Calendar now = Calendar.getInstance();
20.String str = "[" + now.getTime().toString() + "] Accepted a connection1512";
21.byte[] tmp = str.getBytes();
22.LOG_FILE.write(tmp);
23.try
24.{
25.while (true)
26.{
27.Socket socket = accept();
28.new CreateServerThread(socket);
29.}
30.}
31.finally
32.{
33.close();
34.}
35.}
36.public static void main(String[] args) throws IOException
37.{
38.new Server();
39.}
40.//--- Broadcast
41.class Broadcast extends Thread
42.{
43.public Broadcast()
44.{
45.start();
46.}
47.public void run()
48.{
49.while (true)
50.{
51.if (!isClear)
52.{
53.String tmp = (String)Message_Array.getFirst();
54.for (int i = 0; i < Threader.size(); i++)
55.{
56.CreateServerThread client = (CreateServerThread)Threader.get(i);
57.client.sendMessage(tmp);
58.}
59.Message_Array.removeFirst();
60.isClear = Message_Array.size() > 0 ? false : true;
61.}
62.}
63.}
64.}
- 51.la



