java实现服务器同时连接多客户端

———-多线程服务器:

package com.corejava;

import java.net.Socket;

import java.net.ServerSocket;

import java.net.SocketAddress;

import java.io.OutputStream;

import java.io.InputStream;

import java.io.IOException;

import java.io.PrintStream;

import java.util.Scanner;

/*

This program implements a multithreaded server that listens to port 8189 and echoes back all client input.

@author Cay Horstmann

@version 1.20 2004-08-03

*/

public class ThreadedEchoServer

{

public static void main(String[] args)

{

try

{

int i = 1; // 计算多少个服务器线程

ServerSocket s = new ServerSocket(8189);

while (true)

{

System.out.println(“服务器启动,等待链接中…”);

Socket incoming = s.accept(); // 服务器监听等待链接,将阻塞线程!

System.out.println(“正在监听: 线程” + i);

Runnable r = new ThreadedEchoHandler(incoming); // 链接成功, 实例化线程接口

Thread t = new Thread(r); // 实例化线程

t.start(); // 启动线程

i++; // 计数器加1

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

class ThreadedEchoHandler implements Runnable

{

private Socket incoming; // 收到的链接

public ThreadedEchoHandler(Socket incoming)

{

this.incoming = incoming;

}

@Override

public void run()

{

try

{

try

{

OutputStream outStream = incoming.getOutputStream(); // 获取Socket输出流,用于写出响应信息

InputStream inStream = incoming.getInputStream(); // 获取Socket输入流,用于读入客户端请求信息

Scanner in = new Scanner(inStream); // 获取输入流并以文本格式输入

PrintStream out = new PrintStream(outStream); // 以字节流打印服务器信息到输出流

System.out.println(“服务器链接初始化完毕!”); // 服务器端通知消息

out.println(“你好!请输入你请求的信息,退出输入[bye]”); // 客户端通知消息

// echo client input

boolean done = false;

while (!done && in.hasNextLine())

{

String line = in.nextLine(); // 读取一行

out.println(“Echo: ” + line);

if (line.trim().equals(“bye”))

done = true;

}

}

finally

{

SocketAddress sd = incoming.getRemoteSocketAddress();

incoming.close();

System.out.println(“链接: ” + sd + “已断开!”);

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

/*

ubuntu@xu-desktop:~$ javac -d . work/ThreadedEchoServer.java

ubuntu@xu-desktop:~$ java com.corejava.ThreadedEchoServer

服务器启动,等待链接中…

正在监听: 1

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:46903已断开!

正在监听: 2

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:46905已断开!

正在监听: 3

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:46907已断开!

正在监听: 4

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:42016已断开!

正在监听: 5

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:42018已断开!

正在监听: 6

服务器启动,等待链接中…

服务器链接初始化完毕!

链接: /127.0.0.1:42020已断开!

*/

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《java实现服务器同时连接多客户端
本文地址:http://www.xiupu.net/archives-170.html
关注公众号:嗅谱网

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!