知识大全 Java Socket线程的设计原理介绍
Posted 知
篇首语:农村四月闲人少,勤学苦攻把名扬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java Socket线程的设计原理介绍相关的知识,希望对你有一定的参考价值。
Java Socket线程的设计原理介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java Socket线程我们经常会用到的技术 但是有很多程序员还是有不少的使用问题 下面我们就看看如何才能进行有关的代码编写 希望大家又说收获 网络的伟大之一也是信息共享 Server可以主动向所有Client广播消息 同时Client也可以向其它Client发布消息
下面看看如何开发一个可以实时传递消息的程序
Java Socket线程的设计原理
服务器端接受客户端的连接请求 同时启动一个线程处理这个连接 线程不停的读取客户端输入 然后把输入加入队列中 等候处理 在线程启动的同时将线程加入队列中 以便在需要的时候定位和取出
源码}
import java io *;
import *;
import java util *;
import java lang *;
public class Server extends ServerSocket
private static ArrayList User_List = new ArrayList();
private static ArrayList Threader = new ArrayList();
private static LinkedList Message_Array = new LinkedList();
private static int Thread_Counter = ;
private static boolean isClear = true;
protected static final int SERVER_PORT = ;
protected FileOutputStream LOG_FILE = new FileOutputStream( d:/connect log true);
public Server() throws FileNotFoundException IOException
super(SERVER_PORT);
new Broadcast();
//append connection log
Calendar now = Calendar getInstance();
String str = [ + now getTime() toString() + ] Accepted a connection ;
byte[] tmp = str getBytes();
LOG_FILE write(tmp);
try
while (true)
Socket socket = accept();
new CreateServerThread(socket);
finally
close();
public static void main(String[] args) throws IOException
new Server();
// Broadcast
class Broadcast extends Thread
public Broadcast()
start();
public void run()
while (true)
if (!isClear)
String tmp = (String)Message_Array getFirst();
for (int i = ; i < Threader size(); i++)
CreateServerThread client = (CreateServerThread)Threader get(i);
client sendMessage(tmp);
Message_Array removeFirst();
isClear = Message_Array size() > ? false : true;
// CreateServerThread
class CreateServerThread extends Thread
private Socket client;
private BufferedReader in;
private PrintWriter out;
private String Username;
public CreateServerThread(Socket s) throws IOException
client = s;
in = new BufferedReader(new InputStreamReader(client getInputStream()));
out = new PrintWriter(client getOutputStream() true);
out println( Wele to this chatroom );
out println( Input your nickname: );
start();
public void sendMessage(String msg)
out println(msg);
public void run()
try
int flag = ;
Thread_Counter++;
String line = in readLine();
while (!line equals( bye ))
if (line equals( l ))
out println(listOnlineUsers());
line = in readLine();
ntinue;
if (flag++ == )
Username = line;
User_List add(Username);
out println(listOnlineUsers());
Threader add(this);
pushMessage( [< + Username + e on in >] );
else
pushMessage( < + Username + > + line);
line = in readLine();
out println( See you bye! );
client close();
catch (IOException e)
finally
try
client close();
catch (IOException e)
Thread_Counter ;
Threader remove(this);
User_List remove(Username);
pushMessage( [< + Username + left>] );
private String listOnlineUsers()
String s = + Online list + ;
for (int i = ; i < User_List size(); i++)
s += [ + User_List get(i) + ] ;
s += + + ;
return s;
private void pushMessage(String msg)
Message_Array addLast(msg);
isClear = false;
cha138/Article/program/Java/hx/201311/25686
相关参考
网上参考别人的例子改自己的程序终于搞明白了原来在socket的服务器端设置线程并不是像之前想的那样建立一个连接后就重新开一个端口去监听这样的想法遇到了很多问题首先当我把客户端弄成for循环递增的链
Java多线程Socket操作猜数游戏样例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 服务器
Java多线程Socket操作猜数游戏样例[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
Java多线程Socket操作猜数游戏样例[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
JavaSocket多线程服务端、客户端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //主方
知识大全 Java Socket 编程——多线程网络聊天程序
JavaSocket编程——多线程网络聊天程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用
JavaSocket多线程如何支持服务器模型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Ja
知识大全 Java Socket通信技术收发线程互斥的解决方法
JavaSocket通信技术收发线程互斥的解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java线程的概念与原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一操作系统中线程和进程的
知识大全 JAVA高级:多核线程-volatile原理与技巧[1]
JAVA高级:多核线程-volatile原理与技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下